Javascript 承诺返回多个值

Javascript 承诺返回多个值,javascript,ecmascript-6,promise,bluebird,Javascript,Ecmascript 6,Promise,Bluebird,我使用以下代码返回正在运行的承诺OK. 承诺返回数据值 run: () => { return new Promise((resolve, reject) => { .... }).then((data) => { let loginApi = data[0] let test = 1; }).catch((err) => { if (err.statusCode === 302) { va

我使用以下代码返回正在运行的承诺OK. 承诺返回
数据

run: () => {

    return new Promise((resolve, reject) => {
  ....

}).then((data) => {
    let loginApi = data[0]
   let test = 1; 

    }).catch((err) => {
        if (err.statusCode === 302) {
            var data = url.parse(err.response.headers.location, true)
            resolve(data )
        }
    })
});
我叫它

module.run()
    .then((data) => {
我能够得到数据

现在我还想在解析中返回值
test
,我应该怎么做

我试着这样添加它

resolve({data,test});

resolve([data,test]);
像电话一样

module.run()
    .then({data,test}) => {
没有成功(测试是空的),我读到了关于
spread
,但这是唯一的选择吗


我将
ES6
bluebird
最新版本一起使用

如果您使用的是promise chain,那么在promise chain中您就有了then->then->catch->。。。格式。始终返回
承诺。解决
承诺。拒绝
<代码>承诺。解决
将给出下一个
的成功结果,然后
块和
承诺。拒绝
将转到下一个捕获块

var module = {
  run: () => {

    return new Promise((resolve, reject) => {
      // ....
      resolve('promise resolved')
    }).then((data) => {
      let loginApi = data[0]
      let test = 1;
      return Promise.resolve({data,test})
    }).catch((err) => {
        if (err.statusCode === 302) {
            var data = url.parse(err.response.headers.location, true)
            return Promise.resolve({data, test});
        }

        return Promise.reject(err);
    })
  }
};

module.run().then(({data, test}) => {
  console.log(data, test);
})

如果您使用的是承诺链,那么在承诺链中您有->然后->捕获->。。。格式。始终返回
承诺。解决
承诺。拒绝
<代码>承诺。解决
将给出下一个
的成功结果,然后
块和
承诺。拒绝
将转到下一个捕获块

var module = {
  run: () => {

    return new Promise((resolve, reject) => {
      // ....
      resolve('promise resolved')
    }).then((data) => {
      let loginApi = data[0]
      let test = 1;
      return Promise.resolve({data,test})
    }).catch((err) => {
        if (err.statusCode === 302) {
            var data = url.parse(err.response.headers.location, true)
            return Promise.resolve({data, test});
        }

        return Promise.reject(err);
    })
  }
};

module.run().then(({data, test}) => {
  console.log(data, test);
})

resolve({data,test})
解析([数据,测试])将工作,呼叫端是什么样子的?。。请注意,为什么您只解决一个错误?@Keith-就像这个模块.run()。然后({data,test})=>{@Ninawatcher
。然后({data,test})=>{
-您缺少一个括号:
。然后({data,test})=>{…
尝试->
模块.run()。然后({data,test}=>{code>)
@codingitrigue-谢谢你说的对!!!解析({data,test});
和解析([data,test]);
都可以,调用端是什么样子的?。请注意,为什么你只解析一个错误?@Keith-就像这个模块。run()。然后({data,test})=>{@Ninawatcher
。然后({data,test}=>{
-这里缺少一个左括号:
。然后({data,test})=>{…
尝试->
module.run()。然后({data,test})=>{})
@codingitrigue-谢谢你说得对!!!