私はジャスミンの実行を使用し、非同期操作のテストを待ちます。すべてが正常に機能しますが、舞台裏で何が起こっているのかよくわかりません。
ジャスミンのドキュメントには、3 つのログ ステートメントを追加した次の例が記載されています。
describe("Asynchronous specs", function() {
var value, flag;
it("should support async execution of test preparation and exepectations", function() {
runs(function() {
flag = false;
value = 0;
setTimeout(function() {
flag = true;
}, 500);
});
waitsFor(function() {
value++;
if(flag) {
console.log("A");
}
return flag;
}, "The Value should be incremented", 750);
console.log("B");
runs(function() {
console.log("C");
expect(value).toBeGreaterThan(0);
});
});
});
});
最初のruns
とwaitsFor
は私には完全に明らかです。Runs
非同期操作を開始waitsFor
し、条件を待ちます。
runs
ただし、終了するまで2番目が開始されない理由がわかりませんwaitsFor
。はwaitsFor
ブロッキング コールではありません。
私の推測では、終了するまでwaitsFor
後続の呼び出しを暗黙的にブロックします。runs
そうですか?
私の証拠は、console.log ステートメントが出力することです。
BAC
しかし、waitsFor
本当にブロックする場合は、そうする必要があります
ABC