【问题标题】:Cannot get what I should when doing 'fn.apply(null, arguments)' in the Promise在 Promise 中执行 'fn.apply(null, arguments)' 时无法得到我应该得到的结果
【发布时间】:2018-05-12 12:54:39
【问题描述】:

这是功能代码:

let fn = function() { console.log(arguments) }
let fn2 = function() { fn.apply(null, arguments) }

所以在调用fn2(1,'t',4) 之后得到Arguments { 0: 1, 1: "t", 2: 4, … }

但是这段代码:

let def = { }

let p = new Promise((s,f)=>{
    def.s = function() { s.apply(null, arguments) }
    def.f = function() { f.apply(null, arguments) }
})

p.then(function(){
    console.log(arguments)
})

调用def.s(1,'T',2)这个Arguments { 0: 1, … }后返回。

在 Chrome 和 Firefox 中尝试过。我错过了什么吗? 谢谢

【问题讨论】:

  • 该输出中的 是什么?
  • 一个promise的resolve函数接受一个参数,所以'T'2是没有意义的
  • ... 下是隐藏函数和参数对象的其他属性。以 Firefox 为例。

标签: javascript promise arguments apply


【解决方案1】:

promise 只能使用单个值来解析,并且 then 回调只使用一个参数调用。将多个东西传递给resolvereject 是没有意义的。如果您需要所有这些,请将它们作为元组值传递,作为数组的元素。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    • 2021-04-11
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多