【发布时间】:2018-12-15 22:25:39
【问题描述】:
requestReport()
.then(getReportData)
.then(checkReportStatus)
.then(handleData)
checkReportStatus = (data) => {
return new Promise((resolve, reject) => {
if(data.status === 'completed')
resolve(data)
else {
setTimeout(() => getReportData(), 1000)
}
所以我先提出报告请求,然后我需要检查报告是否生成(状态将变为已完成)。如果还没有完成,我需要再次调用 getReportData。但我真的对承诺感到困惑。我的代码实际上有很多行,大约有 15 个链接。如果报告未完成,正确的调用方法是什么,以便完成后可以从handleData继续?
edit1:错字
【问题讨论】:
-
=不是=== -
这里有2个错误:
checkReportStatus和(data)之间应该有一个=,if(data.status = 'completed')应该是if(data.status == 'completed') -
这是我的一个错字,它只是一个伪代码,我更感兴趣的是在 promise 中进行递归调用,直到我得到完成的答案,以便我可以继续进行数据解析。
标签: javascript node.js promise