Javascript 承诺返回多个值
我使用以下代码返回正在运行的承诺OK. 承诺返回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
数据
值
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-谢谢你说得对!!!