2

我有一个简单的基于承诺的$.ajax后循环。代码按预期工作,所以我很好奇。done()(函数执行后,所有数据都显示在控制台中)。然而,Firebug 在方法输出之后显示来自 PHP 脚本的数据done()。为什么是这样?Firebug 在代码继续运行时会做些什么吗?

jQuery

var promises = [];
for (i = 0; i < tochange.length; i++) {
  var promise = $.ajax({
    type:"POST",
    url:"updateLevel.php",
    data: { graph_plot: tochange[i], new_plot:changeto[i]}
  }).done(function(data){
    console.log(data);
  });

  promises.push(promise);
}

$.when.apply(null, promises).done(function() {
  console.log('All done')
});

PHP

require_once(dirname(__FILE__) . '/../services/FirePHP.class.php');
require_once(dirname(__FILE__) . '/../services/fb.php');

ob_start();

$firephp = FirePHP::getInstance(true);
$graph_plot = $_POST['graph_plot'];
$new_plot = $_POST['new_plot'];

if ($graph_plot && $new_plot) {
  fb("$graph_plot, $new_plot");
}
4

0 回答 0