- 主题:问个promise写法
执行两次数据库查询和计算,分别对应calculate1()和calculate2()。 下面
Promise.all写法,要不就全部返回正确结果,要不就都返回错误信息。 如何在返回
错误的时候,返回部分正确的结果?
谢谢
app.get('/api/doAll/, function(req, res) {
Promise.all(
[
new Promise(function(resolve, reject) {
// access mongodb and make some calculation
var data1;
if (calculate1(data1)) {
resolve(data1);
}
else {
reject("error1");
}
}),
new Promise(function(resolve, reject) {
// access mongodb and make some calculation
var data2;
if (calculate2(data2)) {
resolve(data2);
}
else {
reject("error2");
}
})
]
).then(function(data) {
res.end(JSON.stringify(data);
}).catch(function(error) {
res.status = 500;
});
});
--
FROM 107.178.194.*
你可以把check放外边处理。。
以前刚写ios的时候, 定义俩数组,每个请求都返回的时候,检查另一个。。
反正解决方案很多,优雅不优雅另说。
【 在 saynothing (止语) 的大作中提到: 】
: 执行两次数据库查询和计算,分别对应calculate1()和calculate2()。 下面
: Promise.all写法,要不就全部返回正确结果,要不就都返回错误信息。 如何在返回
: 错误的时候,返回部分正确的结果?
: ...................
--
FROM 106.39.87.226
好吧。
如果有三组动作(函数),可以在结果结束的时候,判断其他两个的情况。 stackoverflow很多是这样解决的,也是办法
【 在 shaolin 的大作中提到: 】
: 你可以把check放外边处理。。
: 以前刚写ios的时候, 定义俩数组,每个请求都返回的时候,检查另一个。。
: 反正解决方案很多,优雅不优雅另说。
: ...................
--
FROM 107.178.194.*
自己写个Promise.every
【 在 saynothing (止语) 的大作中提到: 】
: 执行两次数据库查询和计算,分别对应calculate1()和calculate2()。 下面
: Promise.all写法,要不就全部返回正确结果,要不就都返回错误信息。 如何在返回
: 错误的时候,返回部分正确的结果?
: ...................
--
FROM 183.157.160.*
最简单的做法就是在你的promise内部加上try块 catch之后返回个null或者自定义的错误信息 而不是reject
【 在 saynothing 的大作中提到: 】
: 执行两次数据库查询和计算,分别对应calculate1()和calculate2()。 下面
: Promise.all写法,要不就全部返回正确结果,要不就都返回错误信息。 如何在返回
: 错误的时候,返回部分正确的结果?
: ...................
--
FROM 110.23.10.*