Promise.resolve()传递回调参数

时间:2017-10-27 17:09:34

标签: javascript asynchronous promise async-await

在这种情况下如何从promise返回值:

 async foo() {
   let [error, data] = await this.promiseFoo();
 ....
 }

 promiseFoo() {
   return Promise.resolve(this.asyncFoo()).then((error, data) => 
   [error, data]);
 }

then()内获取未定义的错误和数据。如何从asyncFoo返回错误和数据?回调时看起来像:this.asyncFoo((error, data) => {...});

但是我这次要避免使用回调。

2 个答案:

答案 0 :(得分:1)

我认为你正在寻找

promiseFoo() {
    return this.asyncFoo().then(data => [null, data], error => [error, null]);
}

答案 1 :(得分:0)

尝试将您的promiseFoo更改为

promiseFoo() {
   return new Promise ((resolve,reject) =>{
     asyncFoo()
     .then( data =>{
        resolve([null, data])
     }  )
     .catch(err =>{
        resolve([err,null])
     })
   })
 }