Как вы заверните 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 на данный момент не определено.

Что я делаю неправильно?

Ответы на вопрос(5)

Ваш ответ на вопрос