用JS的迭代器模仿 promise then
时间: 2024-11-22 19:37:19 浏览: 4
JavaScript迭代器的含义及用法
在JavaScript中,Promise的`then`方法用于处理异步操作的结果,它允许我们在Promise解决(即成功或失败)后注册回调函数。我们可以使用迭代器和Generator函数来模拟Promise的链式调用,创建一种类似行为。下面是一个简单的例子:
```javascript
function* iteratorPromise(resolve, reject) {
yield new Promise((resolve2, reject2) => {
// 模拟异步操作
setTimeout(() => {
const result = Math.random() > 0.5 ? "Success" : "Failure";
if (result === "Success") {
resolve(result);
} else {
reject(new Error("Something went wrong"));
}
}, 1000);
});
// 下一步操作
if (yield result) {
console.log("Next step after success");
} else {
console.log("Next step after failure");
}
}
// 使用迭代器
const iterator = iteratorPromise(resolve, reject);
iterator.next(); // 开始执行
// 类似于then链式调用
iterator.next(result).then(nextResult => {
if (nextResult.value) {
console.log("Final step after previous success");
}
}).catch(error => {
console.error("Error in final step", error);
});
```
在这个示例中,`iteratorPromise`是一个生成器,它接收两个参数(模拟Promise的`resolve`和`reject`),然后通过yield返回一个新的Promise。当Promise解决时,我们可以在`yield`后面继续执行下一次迭代。这种方式虽然不像Promise那样直观,但在某些场景下可以提供一种简洁的方式来控制流程。
阅读全文