q.all我有点新本q
的东西,我觉得它非常真棒,但有些事我还是想不通。命名承诺结果与
我设法通过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:// blog的地方。 500tech.com/really-you-can-do-that-with-promises/在#2的情况下,他似乎正在这样做(并不是说这是一个值得信任的资源)。此外,在q的Angular文档中,它声明promise可以是一个对象https://docs.angularjs.org/api/ng/service/$q。不知道AngularJS的q与Node的相同。 – lascort
的[Q.js文档】(https://github.com/kriskowal/q/wiki/API-Reference)给出指示,'Q.all()'将代替的阵列的接受的对象。作为解决方法,我建议您找到一种方法,将必需的名称作为每个承诺解决的价值的一部分。 –