是否可以将已解决的承诺分配给对象的 属性?
Is it possible to assign a resolved promise to a property of an object?
我在这里玩弄承诺,并尝试通过将每个承诺包装在 IIFE 中来将一对已解决的承诺分配为对象的属性。但是,已解决的承诺从未分配,尽管它们肯定会拉下请求的数据。
如果我能让它发挥作用,那就太好了,因为它比 success/then/error/catch 块更简洁、更具表现力。可以这样使用 promise 吗?
var obj = function() {
return new Promise(function(resolve, reject){
return {
primary: function() {
return this.promisifiedHttpRequest(primaryQuery, options);
}.call(this),
secondary: function() {
return this.promisifiedHttpRequest(secondaryQuery, options);
}.call(this)
}
}.bind(this));
}
预期结果如下:
var obj = {
primary: primaryQueryResponse,
secondary: secondaryQueryResponse
};
正如 JLRishe 所说,用该代码解释确切的意图有点困难。我想这就是你要找的。这将返回一个带有数组结果的承诺。
return Promise.all([this.promisifiedHttpRequest(primaryQuery, options),
this.promisifiedHttpRequest(secondaryQuery, options)]);
或者,如果您喜欢“{primary: ..., secondary: ...}”对象,试试这个:
return Promise.all([this.promisifiedHttpRequest(primaryQuery, options),
this.promisifiedHttpRequest(secondaryQuery, options)]).then(function(resultArr) {
return {
primary: resultArr[0],
secondary: resultArr[1]
}
});
我花了一段时间才学会这个,也许这不是什么可以滥用的东西,但是 .then()
的 return 值对于 "converting" 对其他东西的承诺非常有用.
我在这里玩弄承诺,并尝试通过将每个承诺包装在 IIFE 中来将一对已解决的承诺分配为对象的属性。但是,已解决的承诺从未分配,尽管它们肯定会拉下请求的数据。
如果我能让它发挥作用,那就太好了,因为它比 success/then/error/catch 块更简洁、更具表现力。可以这样使用 promise 吗?
var obj = function() {
return new Promise(function(resolve, reject){
return {
primary: function() {
return this.promisifiedHttpRequest(primaryQuery, options);
}.call(this),
secondary: function() {
return this.promisifiedHttpRequest(secondaryQuery, options);
}.call(this)
}
}.bind(this));
}
预期结果如下:
var obj = {
primary: primaryQueryResponse,
secondary: secondaryQueryResponse
};
正如 JLRishe 所说,用该代码解释确切的意图有点困难。我想这就是你要找的。这将返回一个带有数组结果的承诺。
return Promise.all([this.promisifiedHttpRequest(primaryQuery, options),
this.promisifiedHttpRequest(secondaryQuery, options)]);
或者,如果您喜欢“{primary: ..., secondary: ...}”对象,试试这个:
return Promise.all([this.promisifiedHttpRequest(primaryQuery, options),
this.promisifiedHttpRequest(secondaryQuery, options)]).then(function(resultArr) {
return {
primary: resultArr[0],
secondary: resultArr[1]
}
});
我花了一段时间才学会这个,也许这不是什么可以滥用的东西,但是 .then()
的 return 值对于 "converting" 对其他东西的承诺非常有用.