Мне нужно сделать два почтовых запроса подряд. Существует асин c функция «post form», которая запускает запрос с ключевым словом «await», а результат обрабатывается в блоке «then».
Я пытаюсь выполнить этот запрос, ожидая обещание, в котором я вызываю вышеупомянутую функцию asyn c. Проблема в том, что кажется, что обещание не может быть разрешено внутри блока функций "then"
.
У меня есть пример кода, чтобы показать проблему (посмотрите на функцию start()
, где она начинается). См. fiddle
//Returns a promise. It contains another async-await promise
function mainFunction() {
return new Promise( () => { //<-- this never resolves
async function postForm(){
//(Post a form)
await new Promise( (resolve, reject) => {
setTimeout(() => {
resolve('resolved');
}, 2000);
}).then( response => { // <-- how to resolve the first promise inside here?
console.log('promise 2 response: ',response)
//Try to resolve the 1st promise (doesn't work)
new Promise( (resolve,reject) => resolve('promise 1 resolved') );
}).catch( error => {
console.log(error)
})
}
postForm();
})
}
//Make two posts in succession
async function start(){
//Post 1 - (never resolves)
await mainFunction().then( response => {
//(Next: make post request 2)
}).catch( error => {
console.log(error)
})
}
start();
Как мне разрешить первое обещание или это невозможно? Есть ли другое решение? Идея состоит в том, чтобы сделать еще один почтовый запрос после разрешения первого.