Javascript 当新操作启动时,前一个异步操作将自动取消的模式是否有名称?
用户通常会在上一个长时间运行的操作完成之前尝试执行某些操作。这可能导致多个操作竞相改变应用程序状态 一个简单的解决方案是取消除最后一个操作之外的所有操作 它有名字吗 我能找到的最接近的问题是关于的问题,但作者和答案都只讨论了实现 redux saga已经(在上面的问题中提到)做了或多或少相同的事情,但是在saga任务上运行。“takeLatest”这个名字似乎在其他任何地方都不常见,也不涉及任何东西 实施示例:Javascript 当新操作启动时,前一个异步操作将自动取消的模式是否有名称?,javascript,typescript,asynchronous,terminology,cancellation,Javascript,Typescript,Asynchronous,Terminology,Cancellation,用户通常会在上一个长时间运行的操作完成之前尝试执行某些操作。这可能导致多个操作竞相改变应用程序状态 一个简单的解决方案是取消除最后一个操作之外的所有操作 它有名字吗 我能找到的最接近的问题是关于的问题,但作者和答案都只讨论了实现 redux saga已经(在上面的问题中提到)做了或多或少相同的事情,但是在saga任务上运行。“takeLatest”这个名字似乎在其他任何地方都不常见,也不涉及任何东西 实施示例: 类异步ActionSlot{ //可撤销承诺仅用于简化此示例。 private _p
类异步ActionSlot{
//可撤销承诺仅用于简化此示例。
private _promise:BluebirdPromise | null=null;
//可用于检查最后一个进程是否已完成
//已完成运行。未在任何位置使用
//在本例中,使用其他方法。
public get isBusy():布尔值{
返回此。\u promise!==null;
}
公共取消():无效{
如果(这是你的承诺){
这是我的承诺;
这个._promise=null;
}
}
public do(promise:promise,callback:(msg:string)=>void):void{
这个。取消();
这个._promise=Bluebird.resolve(promise);
这是我的承诺。然后((msg)=>{
这个._promise=null;
回拨(msg);
});
}
}
用法示例:
const slot=new AsyncActionSlot();
//将被取消,不会打印“你好”`
slot.do(fetchHello(),console.log);
//将打印“世界”`
slot.do(fetchWorld(),console.log);