问题
今天遇到一个问题,await要返回多个值的情况
类似下面的情况 resolve的时候有2个值
function testFunction() {
return new Promise(function(resolve, reject) {
resolve("test1", "test2");
});
}
async function run() {
var response = await testFunction();
console.log(response); // test1
}
run();
但是似乎没有支持的语法来实现
async function run() {
var [response1,response2] = await testFunction();
console.log(response1); // "t"
}
这样写的话,也是解构第一个值
试试这样的语法?
function testFunction1() {
return new Promise(function(resolve, reject) {
testFunction().then((v1,v2)=>{
resolve([v1,v2])
})
});
}
async function run() {
var [response,response2] = await testFunction1();
console.log(response); // test1
console.log(response2); // undefined
}
并不行!~
其实是promise的resolve问题
Promise.resolve(value); //只支持一个参数
所以只能把原函数改成这样
function testFunction() {
return new Promise(function(resolve, reject) {
resolve(["test1", "test2"]);
});
}
总结
一直以为resolve 支持多个参数的...