Как я могу выполнить Promise all в javascript?

#javascript #angularjs

#javascript #angularjs

Вопрос:

Я использовал Promise.все, и я не получаю ни одного обещания в конце, но promise должен принимать кучу отдельных обещаний и возвращать вам одно обещание, верно?

У меня есть цикл for, который будет вызывать метод, который выполняет работу асинхронно. Этот цикл может вызывать метод много раз. После этого цикла у меня есть еще один цикл, который нужно выполнять только тогда, когда все сделано.

 function doSomethingAsync(i) {
// do your stuf 
    setValue(i, function(err, result) {
        if (err) {
            console.log(err)
        } else {
            console.log(result)
        }
    })
}
 

кто-нибудь может мне здесь помочь. я не уверен, правильна моя реализация или нет.

Ответ №1:

Ваша функция doSomethingAsync не возвращает никаких обещаний. Вместо этого он использует обратные вызовы. Вы можете обернуть это так.

 function doSomethingAsync(i) {
// do your stuf 
    return new Promise(resolve => {
        setValue(i, function(err, result) {
        if (err) {
            console.log(err);
            resolve(err);
        } else {
            console.log(result);
            resolve(result);
        }
    })
    })
}