我有一个简单的基于承诺的$.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");
}