【发布时间】:2019-03-22 01:15:11
【问题描述】:
我使用的是节点版本 6,并且我已经链接了几个 .then 的。但是,只有第二个 .then 取决于先前的结果,但其余的 .then 不依赖于先前的结果。当它们不依赖于先前的结果时,如何链接 .then。
这是我的代码:
return admin.auth().getUser(phone)
.then(userRecord => {
return rp(options)
})
.then((orderResponse) => {
return admin.database().ref('trans/'+ phone)
.push({ amount: orderResponse.amount })
})
.then(() => {
return admin.database().ref('ord/'+ phone)
.push({ payment_id })
})
.then(() => {
return saveThisAddress === true ?
admin.database().ref('add/'+phone)
.push({address: finalAddress}) : null
})
.then(() => {
return admin.database().ref('dStatus/'+phone+'/'+orderNumber)
.set({ plan: planName === "" ? "Single Day Plan" : planName, orderStatus: orderStatus,
}, () => {
res.status(200).send({ success:true })
})
})
.then(() => {
return admin.database().ref(`couponCodes/${couponCodeName}`)
.update({couponUsage: couponUsage + 1 })
})
.then(() => {
return admin.database().ref(`couponUsage/${phone}`)
.update({ [couponCodeName]: usersCouponUsage + 1 })
})
.catch((err) => {
res.status(422).send({error: err });
});
很少有人这么说,我在滥用承诺。我究竟做错了什么 ?当每个 .then 不依赖于先前的结果时,如何处理多个 .then ?因为我使用的是节点 6,所以这里不能使用 async / await。
请指导
【问题讨论】:
-
“不依赖于以前的结果”是什么意思?你不想等待前面的结果,然后同时运行所有的东西吗?
-
顺便说一句,节点 6 是下个月 EOL。
-
"很少有人说我在滥用承诺。" - 谁说的,在哪里说的,他们到底说了什么,他们有没有给出理由?你有链接,报价吗?
-
@DazzilePro 啊,谢谢。好吧,他们完全错了。你的代码很好(虽然有点奇怪)。
标签: javascript promise