javascript - 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
我在上面的例子中遗漏了什么?
解决方案
由于 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);
});
推荐阅读
- python - ValueError:形状必须为 2 级,但对于“MatMul”(操作:“MatMul”)为 1 级,输入形状为:[2]、[2,3]
- node.js - bcrypt-nodejs 比较函数总是返回 false
- java - Jenkins-Maven 构建失败:找不到主类:jenkins.maven3.agent.Maven32Main。程序将会退出
- python - Django中不同模型的输出
- css - 覆盖按比例大小的背景图像
- cakephp - CakePHP 3.x 具有 11 种不同模型的搜索表单
- jquery - IE 11 中 +45 列的 JQuery 数据表脚本错误
- google-app-maker - Appmaker 从 Drive 表迁移到 Cloud SQL 查询
- sql - SQL 不正确的语法“联合”
- html - div 元素未定位为粘性