Sat*_*ato 1 javascript node.js promise bluebird
所以,我有4项任务:getStatus(),updateStatus(A),getTask(),updateTask(),它应该以这种方式执行:
getStatus(function(status) {
// A
updateStatus(status, function(status) {
// B
getTask(function(task) {
// C
updateTask(task, function(task) {
// D
})
})
})
})
Run Code Online (Sandbox Code Playgroud)
所以为了避免回调地狱,我用了诺言,现在所有这四个任务都返回了一个Promise,然后我改成了这个方式
getStatus().then(function(status) {
// A
updateStatus(status).then(function(status) {
// B
getTask().then(function(task) {
// C
updateTask(task).then(function(task) {
//D
})
})
})
})
Run Code Online (Sandbox Code Playgroud)
如你所见,它仍然有then hell,
我对Promise做错了吗?
如果您不需要status在C和D中使用,这种使用.then将导致一个解析为task:
getStatus()
.then(updateStatus)
.then(() => getTask())
.then(updateTask)
Run Code Online (Sandbox Code Playgroud)
还有async/await:
const status = await getStatus();
await updateStatus(status);
const task = await getTask();
await updateTask(task);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |