我使用以下代码返回正在运行的承诺确定。
承诺返回data
值
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
最新版本
答案 0 :(得分:0)
如果您正在使用承诺链,那么您可以在承诺链中使用> then-> catch-> ...格式。始终返回Promise.resolve
或Promise.reject
。 Promise.resolve
将为下一个then
块提供成功结果,Promise.reject
将转到下一个阻止块。
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);
})