Как вы заверните setTimeout в обещание
Я пытаюсь запустить набор тестов для объекта, который возвращает обещание. Я хочу связать несколько действий вместе с короткими тайм-аутами между ними. Я думал, что «тогда» вызов, который вернул обещание, будет ждать выполнения обещания, прежде чем запустить следующий цепной вызов.
Я создал функцию
function promiseTimeout (time) {
return new Promise(function(resolve,reject){
setTimeout(function(){resolve(time);},time);
});
};
попробовать обернуть setTimeout в обещание.
Затем в моем тестовом наборе я звоню примерно так ...
it('should restore state when browser back button is used',function(done){
r.domOK().then(function(){
xh.fire('akc-route-change','/user/4/profile/new');
}).then(promiseTimeout(2000)).then(function(t){
xu.fire('akc-route-change','/user/6');
}).then(promiseTimeout(10)).then(function(t){
expect(xu.params[0]).to.equal(6);
history.back();
}).then(promiseTimeout(10)).then(function(){
expect(xu.params[0]).to.equal(4);
done();
});
});
Я могу поставить точку останова на первомxh.fire
позвоните и второй наxu.fire
колл и ожидал двухсекундный разрыв, когда a продолжается от первой точки останова до второй.
Вместо этого он сразу достигает второй точки останова, и значениеt
на данный момент не определено.
Что я делаю неправильно?