2017-01-31 3 views
1

Сегодня я просмотрел множество примеров. Они, кажется, предполагают, что следующий код должен быть выполнен в цепочке:Обещание не дожидаясь окончания

let f =() => { 
    return new Promise((res, rej) => { 
     console.log('entering function'); 
     setTimeout(() => { 
      console.log('resolving'); 
      res() 
     }, 2000) 
    }); 
}; 

Promise.resolve() 
    .then(f()) 
    .then(f()); 

Ожидаемый результат будет:

entering function 
resolving 
entering function 
resolving 

Но это не так. Выходной сигнал

entering function 
entering function 
resolving 
resolving 

и я не могу понять, почему. Любая помощь будет высоко ценится.

ответ

8

попробовать then(f) вместо then(f())

then ожидает функции.

вы также можете сделать then(()=>f())

+1

Дополнительной помощи, вызов 'то (е())' вызывает функцию сразу –

+0

Это было. спасибо – Adam