Я использую запуск жасмина и жду, чтобы проверить асинхронные операции. Все работает отлично, но я не совсем уверен, что происходит за кулисами.
В документации по жасмину указан следующий пример, в который я добавил три оператора журнала.
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
не запускается до завершения waitsFor
. waitsFor
не является блокирующим вызовом.
Я предполагаю, что waitsFor
неявно блокирует любой следующий вызов runs
до его завершения. Это так?
Мое свидетельство заключается в том, что вывод команд console.log:
B A C
Но если waitsFor
действительно блокирует, он должен быть
A B C