Promise.all () на основе функций, возвращающих обещания - PullRequest
0 голосов
/ 08 декабря 2018

Я пытаюсь использовать Promise.all() с обещаниями, инкапсулированными в функциях:

function fn1(val){

    return new Promise((resolve, reject) => {  

       /* promise body */        
    });    
}


function fn2(val){

    return new Promise((resolve, reject) => {  

       /* promise body */        
    });    
}



fn1(data)
.then((val) => fn2(val))
.catch((error) => alert(error)



Promise.all([fn1, fn2]).then(() => alert("Done!"))

Это кажется невозможным, поскольку Promise.all([fn1, fn2]) выполняется непосредственно вместо ожидания обещаний успеха.

Я знаю, что мог бы просто связать другую .then() со структурой thenable , но мне интересно, есть ли способ использовать Promise.all() в контексте, где Promises содержатся в функциях.

1 Ответ

0 голосов
/ 08 декабря 2018

Promise.all занимает Array из Promise с.

Поскольку ваши функции возвращают Обещания, вы можете вызывать функции при объявлении массива Promise.all, и они будут заменены на Обещания.

//  error handling (reject/catch) omitted for brevity.

function fn1 (val) {
  return new Promise(resolve => {
    resolve('foo ' + val)
  })
}

function fn2 (val) {
  return new Promise(resolve => {
    resolve('bar ' + val)
  })
}

Promise.all([fn1(1), fn2(2)])
  .then(result => console.log(result))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...