如何解决JS-中断异步执行 我可以提出的解决方案
实际问题
我要解决的问题是用户可能未在消息上提供足够的信息(不一致)。为了获得所有必要的数据,系统会提示用户对漫游器消息做出反应。 该漫游器消息分为三个阶段:“ InitialPrompt”,“ TimeoutWarning”和“ TimeoutSuccess(TicketFailure)”。
我希望解决方案是什么
使用我编写代码的方式,初始化后无法终止超时。我认为抛出错误将停止函数的执行。我想这不会发生,因为异步调用会排队,而不是逐行运行。
有没有一种方法,而无需添加布尔值并检查每个函数调用的开头?
我可以提出的解决方案
const interPtr = {interrupted : false};
interruptSignal(interPtr);
if(interPtr.interrupted) return;
console.log("...");
...
实际代码
(async () => {
const sleep = async time => new Promise(resolve => setTimeout(resolve,time));
const interruptSignal = () => new Promise(async (res,rej) => {
console.log("interruptStarted")
await sleep(2000);
console.log("interruptRan");
throw "Interrupted"
});
const timeOutHandler = async () => {
interruptSignal();
console.log("TimeoutStarted")
await sleep(5000);
console.log("TimeoutWarning")
await sleep(5000);
console.log("TimeoutSuccess->TicketFailure")
};
try {
await timeOutHandler();
} catch (e) {
console.log(e);
}
})()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。