Я новичок в этом q
материалах, и я нахожу это довольно удивительным, но есть кое-что, что я до сих пор не могу понять.Именованные обещают результаты с q.all в NodeJS
Мне удалось выполнить некоторые комбинированные обещания с q.all
, пройдя q.all
массив обещаний. Что-то вроде этого ..
var promises = [promiseOne(), promiseTwo()];
q.all(promises).then(function (results) {
res.send(results);
});
Дело в том, что я на самом деле хочу, чтобы эти обещания быть названы, так что я не должен полагаться в порядке обещаний.
Я где-то читал, что вы можете передать объект q.all
, чтобы получить результаты. Так что было бы что-то вроде этого:
var promises = { promiseOne: promiseOne(), promiseTwo: promiseTwo() }
q.all(promises).then(function(results){
res.send(results);
});
Но я предполагаю, что это просто не работает точно так же, как и отправить массив, как я не получаю результаты моих обещаний там. В результате я получаю похож на этот:
{
promiseOne: {
source: {}
},
promiseTwo: {
source: {}
}
}
Так как бы вы идти о получении названных результатов от q.all?
Следует отметить, что количество обещаний, которое у меня будет в массиве promises
, не фиксируется, поскольку я получаю это от параметра GET
, отправленного пользователем к моей функции.
Кроме того, в каждом из моих обещаний у меня есть другой массив (или объект) обещаний, подлежащих разрешению, и результаты которых я хотел бы назвать также.
Я не думаю, что вы можете передать объект как вход в 'Q.all', и результат' Q.all' будет массивом всегда – thefourtheye
@thefourtheye Вот где я нашел этот http: // блог. 500tech.com/really-you-can-do-that-with-promises/ В случае № 2 он, кажется, делает это (не говоря, что это надежный ресурс). Кроме того, в Angular docs для q указано, что обещаниями может быть объект https://docs.angularjs.org/api/ng/service/$q. Не уверен, что q угловой JS тот же, что и Node. – lascort
В документации [Q.js] (https://github.com/kriskowal/q/wiki/API-Reference) не указано, что 'Q.all()' будет принимать объект вместо массива. В качестве обходного пути я бы предложил, чтобы вы нашли способ включить требуемое имя как часть значения, с которым разрешено каждое обещание. –