在async/await上返回多个变量

Mar*_*oer 12 javascript asynchronous async-await es6-promise

我想知道是否有办法获得第二个resolve值(test2)而不返回数组或JavaScript对象.

function testFunction() {
  return new Promise(function(resolve, reject) {
    resolve("test1", "test2");
  });
}

async function run() {
  var response = await testFunction();
  console.log(response); // test1
}

run();
Run Code Online (Sandbox Code Playgroud)

Sur*_*yan 21

您只能传递一个项目.但从这里开始ES6有一个很好的功能叫做阵列解构.

返回一个数组,您可以将属性分配保留在引擎盖下.

function testFunction() {
    return new Promise(function(resolve, reject) {
  	       resolve([ "test1", "test2"] );
           });
}

async function run() {

  const [firstRes, secondRes] = await testFunction();
  
  console.log(firstRes, secondRes);

}

run();
Run Code Online (Sandbox Code Playgroud)

  • 我刚刚发现`const {response1,response2} =等待testFunction();`在Node.js中工作8.它还被`util`模块中的`promisify`方法使用.所以没有必要返回一个数组:-) (2认同)