2016-03-21 4 views
1

Я использую библиотеку Promise Node.js, и я хотел бы сделать следующее:не Promise.all работать, когда он вернулся из .then() обратного вызова

  1. Выполнение асинхронной операции, которая возвращает Promise ,
  2. Когда эта операция завершается, верните обещание, которое будет завершено, когда будут завершены две операции асинхронного параллелизма.

код я использую следующее:

var Promise = require('promise'); 

var resolved1 = Promise.resolve(1); 

var resolvedAll = resolved1.then(function() { 
    return Promise.all(Promise.resolve(2), Promise.resolve(3)); 
}); 

var print = resolvedAll.then(function(values) { 
    console.log(values); 
}); 

print.done(function() { 
    console.log('done'); 
}); 

Но этот код не работает, как ожидалось, так как он печатает:

[] 
done 

От доку, Promise.all возвращается обещание, которое решает, когда все обещания в итеративном аргументе решены. Поэтому теоретически разрешено. Все не должно заканчиваться, пока все обещания, переданные Promise.all, не завершились, но это не то, что здесь происходит.

Любая идея, почему Promise.all не работает должным образом? Может ли это быть ошибкой? Кто-нибудь знает альтернативы для возврата нескольких обещаний из обратного вызова .then()?

Приветствия, Galder

ответ

4

Promise.all ожидает массив:

Promise.all([Promise.resolve(2), Promise.resolve(3)]); 
+0

Дамма, это мой Java ожидания получения списков параметров в пути. Благодаря! –