2017-02-08 3 views
0

Я изучаю Promise с использованием TypeScript в настоящее время, и я надеюсь, что кто-то может помочь мне понять, почему следующие обещания не выполняются последовательно, как я хочу, чтобы они делали, я пробовал использовать этот материал в течение 2 дней без удачи, поэтому, пожалуйста, не стесняйтесь делиться некоторыми идеями, спасибо вам большое.TypeScript Обещает не выполнять последовательно

step1() 
.then(() => { 
     return step2(); 
}) 
.then(() => { 
     return step3(); 
}); 

function step1() : Promise<void>{ 
     return new Promise<void>(() => { 
       setTimeout(() => {console.log("1");}, 1000); 
     }); 
} 

function step2() : Promise<void>{ 
     return new Promise<void>(() => { 
       setTimeout(() => {console.log("2");}, 1000); 
     }); 
} 

function step3() : Promise<void>{ 
     return new Promise<void>(() => { 
       setTimeout(() => {console.log("3");}, 1000); 
     }); 
} 

Он останавливается на шаге 1, и ни одна из других функций никогда не называется.

ответ

1

Даже если ваше обещание недействительно, вам все равно нужно вызвать функцию разрешения, чтобы указать, что вы закончили.

Вместо

return new Promise<void>(() => { 
     setTimeout(() => {console.log("1");}, 1000); 
}); 

Попробуйте

return new Promise<void>((resolve) => { 
     setTimeout(() => {console.log("1"); resolve()}, 1000); 
}); 

в каждой функции

+0

OMG! Большое спасибо, чувак, ты просто спас мне жизнь! славный день сэр. – NinjaTurtle

Смежные вопросы