契約は次のとおりです。
次のように、コールバックにローカル配列を設定します。
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
または、おそらく、取得できる唯一の方法がそのコールバック内からである場合、これを行うためのより良いパラダイムがありますか?
ありがとう!