比如说做一件事分几个动作: step1 、 step2 、 finish ,前两个是异步的, step1 完成后才能执行 step2 (然后 finish )。我想到用 Promise 这么写:
let prom = new Promise((resolve, reject) => {
// step1 ,用 setTimeout 模拟一下异步
setTimeout(() => resolve('1'), 1000);
// 先忽略 reject 相关动作
});
prom.then(data => {
// step2
setTimeout(() => {
prom.then(data => {
// finish
console.log(`完成: ${data}`)
});
}, 1000);
});
可这样不就成 callback hell 了吗?而且从 step2 往后传数据也不方便。
由此引发的还有 step1 出错执行reject()
如何中止整个过程的问题。
还是我对 Promise 的理解有问题?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.