Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当新操作启动时,前一个异步操作将自动取消的模式是否有名称?_Javascript_Typescript_Asynchronous_Terminology_Cancellation - Fatal编程技术网

Javascript 当新操作启动时,前一个异步操作将自动取消的模式是否有名称?

Javascript 当新操作启动时,前一个异步操作将自动取消的模式是否有名称?,javascript,typescript,asynchronous,terminology,cancellation,Javascript,Typescript,Asynchronous,Terminology,Cancellation,用户通常会在上一个长时间运行的操作完成之前尝试执行某些操作。这可能导致多个操作竞相改变应用程序状态 一个简单的解决方案是取消除最后一个操作之外的所有操作 它有名字吗 我能找到的最接近的问题是关于的问题,但作者和答案都只讨论了实现 redux saga已经(在上面的问题中提到)做了或多或少相同的事情,但是在saga任务上运行。“takeLatest”这个名字似乎在其他任何地方都不常见,也不涉及任何东西 实施示例: 类异步ActionSlot{ //可撤销承诺仅用于简化此示例。 private _p

用户通常会在上一个长时间运行的操作完成之前尝试执行某些操作。这可能导致多个操作竞相改变应用程序状态

一个简单的解决方案是取消除最后一个操作之外的所有操作

它有名字吗

我能找到的最接近的问题是关于的问题,但作者和答案都只讨论了实现

redux saga已经(在上面的问题中提到)做了或多或少相同的事情,但是在saga任务上运行。“takeLatest”这个名字似乎在其他任何地方都不常见,也不涉及任何东西

实施示例:

类异步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);