Думаю, в вашем случае больше подойдет Jasmine версии 1.3 -
jasmine.github.io/1.3/introduction.html
У них была поддержка подобных штук - runs / waitsFor.
var id = 0;
runs(function() {
setTimeout(function() {
console.log('1st');
id = 4;
}, 5000);
});
waitsFor(function() {
return id === 4; //если за 7секунд эта штука не вернет true, получим ошибку "timeout: timed out after 7000 msec waiting for id === 4" и дальше выполнение не пойдет
}, 'id === 4', 7000);
runs(function() {
//в эту функцию мы перейдем, только после того как предыдущая waitsFor вернет true.
console.log('2nd');
expect(id).toEqual(4);
});
runs(function() {
console.log('3rd');
setTimeout(function() {
id = 8;
}, 5000);
});
waitsFor(function() {
return id === 8;
}, 'id === 8', 7000);
runs(function() {
console.log('4th');
expect(id).toEqual(8)
});
Для 2.0 единственное решение - заводить несколько it и делать done после каждого.. Но это не очень хорошее решение - не для того it предназначается.