当前位置: 首页 > 面试题库 >

许诺可以对onFulfilled有多个参数吗?

尉迟边浩
2023-03-14
问题内容

我在这里遵循规范,不确定是否允许使用多个参数调用onFulfilled。例如:

promise = new Promise(function(onFulfilled, onRejected){
    onFulfilled('arg1', 'arg2');
})

这样我的代码:

promise.then(function(arg1, arg2){
    // ....
});

会同时收到arg1arg2

我不在乎任何特定的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对象? 这可能吗? -斯里 问题答案: 我很确定那是行不通的。可能有一种解决方法,但更简单的方法是引入包装器对象并更改您的签名: