【发布时间】:2022-02-16 10:27:31
【问题描述】:
我想知道是否有任何取消/停止包含多个等待函数的 javascript 函数的执行。由于 Promise 的性质以及它们缺乏适当的取消,是否有任何其他实现或库可以帮助我实现这样的目标?
async function run(x,y,z) {
return new Promise(async(resolve,reject) => {
await doSomething(x)
await doSomething(y)
//cancel could be happen around here and stop the last "doSomething"
await doSomething(z)
})
}
setTimeout(() => {
run.cancel()
},500) //cancel function after 500ms
【问题讨论】:
-
没有承诺。 Observables 是你想要研究的东西。
-
您的实际
doSomething()中有什么。请显示真实代码,而不是理论代码,因为我们可以为您提供更好的帮助。如何中止 nodejs 或浏览器中的某些内容完全取决于操作是什么。中止没有通用的答案。 -
另外,将现有的返回承诺的操作包装在你自己的新承诺中是一种承诺反模式。不应该那样做。
-
@jfriend00 doSomething() 函数主要是获取请求和数据解析这些请求,每个函数可能需要大约 250 - 1000 毫秒
-
@Seti 观察者的问题是它实际上并没有停止代码执行,而是提供了一个窗口,让我们知道何时可以返回一个值。
标签: javascript node.js promise es6-promise cancellation