我在这里遵循规范,不确定是否允许使用多个参数调用onFulfilled。例如:
promise = new Promise(function(onFulfilled, onRejected){
onFulfilled('arg1', 'arg2');
})
这样我的代码:
promise.then(function(arg1, arg2){
// ....
});
会同时收到arg1
和arg2
?
我不在乎任何特定的promise实现如何实现,我希望严格遵循w3c规范中的promise。
我在这里遵循规范,不确定是否允许使用多个参数调用onFulfilled。
不,在promise构造函数中,仅第一个参数将被视为分辨率值。您可以使用诸如对象或数组之类的复合值进行解析。
我不在乎任何特定的promise实现如何实现,我希望严格遵循w3c规范中的promise。
那就是我认为你错了的地方。该规范被设计为最小化,旨在在Promise库之间进行互操作。这个想法是要有一个子集,例如DOM期货可以可靠地使用,而库可以使用。Promise实现暂时会执行您要求的操作.spread
。例如:
Promise.try(function(){
return ["Hello","World","!"];
}).spread(function(a,b,c){
console.log(a,b+c); // "Hello World!";
});
与bluebird。如果需要此功能,一种解决方案是对其进行填充。
if (!Promise.prototype.spread) {
Promise.prototype.spread = function (fn) {
return this.then(function (args) {
return Promise.all(args); // wait for all
}).then(function(args){
//this is always undefined in A+ complaint, but just in case
return fn.apply(this, args);
});
};
}
这使您可以:
Promise.resolve(null).then(function(){
return ["Hello","World","!"];
}).spread(function(a,b,c){
console.log(a,b+c);
});
带着原生的诺言轻松自在地摆弄。或使用在浏览器中现在很普遍的价差(2018):
Promise.resolve(["Hello","World","!"]).then(([a,b,c]) => {
console.log(a,b+c);
});
或等待:
let [a, b, c] = await Promise.resolve(['hello', 'world', '!']);
问题内容: 在Java中,lambda是否可以接受多种不同类型? 即:单个变量起作用: Varargs也可以工作: 但是我想要可以接受许多不同类型参数的东西,例如: 为了方便起见,主要用途是在函数内部具有小的内联函数。 我环顾了Google并检查了Java的Function Package,但找不到。这可能吗? 问题答案: 如果使用多个类型参数定义这样的功能接口,则是可能的。没有这样的内置类型。(
问题内容: 我正在尝试选择和以外的所有s的元素。 许多人表明您可以在中放置多个参数,但是无论如何,尝试使用似乎都行不通。 有任何想法吗? 问题答案: 为什么:不只是使用两个: 是的,这是故意的
问题内容: 只是想知道是否有一种更优雅或更标准的方式来处理可选参数,或者是否必须检查每个参数是否为空。我有10多个可选参数,因此变得有点难看。 理想情况下,我想是这样的bash命令:。 问题答案: 编写这样的实用程序
主要用途是为了方便,在函数内部有小的内联函数。 我环顾了谷歌,检查了Java的函数包,但是没有找到。这可能吗?
问题内容: 我正在尝试使用 在我的Matrix类上,但是在我看来,它是行不通的(我仍然不太清楚使用python)。我这样称呼它: 是否可以使用多个参数?谢谢。也许我只能使用一个参数,但是将其作为元组传递? 问题答案: 仅接受一个参数(除外),因此您可以通过一个元组。 你可以这样做: 输出 查看文档的更多信息。
问题内容: 我已经实现了Spring RESTful Web服务。使用Jackson JSON进行对象映射。我有一个接受两个参数的方法。 客户端将如何构造一个请求,以便在正文中传递多个JSON对象? 这可能吗? -斯里 问题答案: 我很确定那是行不通的。可能有一种解决方法,但更简单的方法是引入包装器对象并更改您的签名: