这是交易:
我在回调中填充一个本地数组,如下所示:
var datasource = datasources[id];
var contexts = [];
datasource.data($selected.parent().data(), function (items) {
var dataarr = items.data;
for (var i = 0; i < dataarr.length; ++i) {
contexts.push(dataarr[i]);
}
});
foo(contexts);
现在,在 foo 中,我运行一个简单的检查,例如:
function foo(contexts) {
if (contexts.length < 2) {
return;
}
}
如果我在上面的 return 语句处中断,contexts.length 实际上大于 2。同样,如果我在调试器中逐步运行代码,一切都会按预期工作。
这让我怀疑,当不在调试器中运行时,这段代码是在回调完成之前执行的。
美好的。但是如何控制执行顺序呢?或者,如果我知道的唯一方法items.data
是从回调中获取,是否有更好的范例来解决这个问题?
谢谢!