首页 > 解决方案 > Javascript-在promise中使用apply for resolve时仅传递第一个参数

问题描述

我正在尝试使用 JavaScript 中的 apply 函数在给定的 Promise 中调用带有参数数组的 resolve 函数。但是,只传递了第一个参数,其余参数未定义。最小的例子:

const p = function(){
return new Promise(function(resolve,reject){
resolve.apply(null,["a1","a2","a3"]);
});
};

p().then(function(a1,a2,a3){
console.log(a1);
console.log(a2);
console.log(a3);
});

以上给出了输出:

a1
undefined
undefined

我在上面的例子中遗漏了什么?

标签: javascriptnode.jspromise

解决方案


由于 resolve 只接受一个参数,(并且.then(fn回调只接受一个参数),你可以简单地

const p = function() {
  return new Promise(function(resolve, reject) {
    resolve(["a1", "a2", "a3"]);
  });
};

p().then(function([a1, a2, a3]) {
  console.log(a1);
  console.log(a2);
  console.log(a3);
});


推荐阅读