gpt4 book ai didi

javascript - 带有 setTimeout 的嵌套 Promise

转载 作者:行者123 更新时间:2023-11-30 14:41:36 28 4
gpt4 key购买 nike

我有一个嵌套的 promise 。 promise 解决或拒绝基于另一个 promise 解决或拒绝 setTimeout 为 0 以免堵塞:

  return new Promise((resolve, reject) => {
promiseInst
.then(value => {
executeSoon(() => {
dispatch({ ...action, status: "done", value: value });
resolve(value);
});
})
.catch(error => {
executeSoon(() => {
dispatch({
...action,
status: "error",
error: error.message || error
});
reject(error);
});
});
});

executeSoon()executeSoon(fn) { setTimeout(fn, 0); }

我该如何简化它?试图摆脱外部 promise 包装器并直接返回内部 promise 但陷入 resolve 和 reject 未被定义的困境。所以我想我只是从 .then 内部返回一个 Promise.resolve(value) 并从 catch 返回一个 Promise.reject(error) ,但这不起作用任何一个。我觉得有可能简化这个,但我不能完全理解它。

最佳答案

只需使用一个有前途的计时器:

  const timer = ms => new Promise(res => setTimeout(res, ms));

那么就很简单了:

  timer(0).then(() => promiseInst)
.then(...)
.catch(...)

.... 但实际上您不需要计时器,因为在 resolve() 被调用后, promise 会保证解决一次滴答。

关于javascript - 带有 setTimeout 的嵌套 Promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49569310/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com