标签: cancellation

如何在AngularJS中取消$ http请求?

给出AngularJS中的Ajax请求

$http.get("/backend/").success(callback);
Run Code Online (Sandbox Code Playgroud)

如果启动另一个请求(相同的后端,例如不同的参数),取消该请求的最有效方法是什么.

promise cancellation angularjs angular-http angular-promise

184
推荐指数
5
解决办法
11万
查看次数

取消一个vanilla ECMAScript 6 Promise链

有没有清除.thenJavaScript Promise实例的方法?

我在QUnit上编写了一个JavaScript测试框架.框架通过在a中运行每个框架来同步运行测试Promise.(抱歉这个代码块的长度.我尽可能地评论它,所以感觉不那么乏味.)

/* Promise extension -- used for easily making an async step with a
       timeout without the Promise knowing anything about the function 
       it's waiting on */
$$.extend(Promise, {
    asyncTimeout: function (timeToLive, errorMessage) {
        var error = new Error(errorMessage || "Operation timed out.");
        var res, // resolve()
            rej, // reject()
            t,   // timeout instance
            rst, // reset timeout function
            p,   // the promise instance
            at;  // the returned asyncTimeout instance

        function …
Run Code Online (Sandbox Code Playgroud)

javascript promise cancellation es6-promise

88
推荐指数
6
解决办法
7万
查看次数

承诺 - 是否有可能强制取消承诺

我使用ES6 Promises来管理我的所有网络数据检索,在某些情况下我需要强制取消它们.

基本上这种情况是我在UI上有一个提前输入搜索,其中请求被委托给后端必须基于部分输入执行搜索.虽然此网络请求(#1)可能需要一点时间,但用户会继续键入哪个最终会触发另一个后端调用(#2)

这里#2自然优先于#1,所以我想取消Promise包装请求#1.我已经拥有数据层中所有Promise的缓存,因此我理论上可以检索它,因为我试图提交#2的Promise.

但是一旦从缓存中检索Promise,我该如何取消Promise#1?

有人可以建议一种方法吗?

javascript promise cancellation

68
推荐指数
4
解决办法
3万
查看次数

如何在.NET 4.0中请求超时或取消之前"休眠"

什么是睡了一定的时间,但能够被一个中断的最佳方式IsCancellationRequestedCancellationToken

我正在寻找一个适用于.NET 4.0的解决方案.

我想写

void MyFunc (CancellationToken ct)
{
   //... 
   // simulate some long lasting operation that should be cancelable 
   Thread.Sleep(TimeSpan.FromMilliseconds(10000), ct); 
}
Run Code Online (Sandbox Code Playgroud)

c# sleep .net-4.0 cancellation cancellationtokensource

52
推荐指数
2
解决办法
2万
查看次数

可以取消jQuery延期吗?

我有一种情况,我想取消延期.延迟与ajax调用相关联.

为什么我使用延期

我不使用$ .ajax返回的普通xhr对象.我正在使用jsonp,这意味着我无法使用HTTP状态代码进行错误处理,并且必须将它们嵌入到响应中.然后检查代码,并相应地将关联的延迟对象标记为已解决或拒绝.我有一个自定义api函数,为我这样做.

function api(options) {
  var url = settings('api') + options.url;
  var deferred = $.Deferred(function(){
    this.done(options.success);
    this.fail(options.error);
  });
  $.ajax({
    'url': url,
    'dataType':'jsonp',
    'data': (options.noAuth == true) ? options.data : $.extend(true, getAPICredentials(), options.data)
  }).success(function(jsonReturn){
    // Success
    if(hasStatus(jsonReturn, 'code', 200)) {
      deferred.resolveWith(this, [jsonReturn]);
    } 
    // Failure
    else {
      deferred.rejectWith(this, [jsonReturn]);
    }
  });

  return deferred;
}
Run Code Online (Sandbox Code Playgroud)

为什么我要取消延期

有一个输入字段用作列表的过滤器,并在键入结束后半秒自动更新列表.因为一次可能有两个ajax调用是未完成的,所以我需要取消之前的调用以确保它在第二个调用之后不返回并显示旧数据.

解决方案我不喜欢

  • 我不想拒绝延期,因为这将解雇附带的处理程序.fail().
  • 我不能忽略它,因为它会在ajax返回时自动标记为已解决或被拒绝.
  • 删除延迟将在ajax调用返回时导致错误,并尝试将延迟标记为已解决或已拒绝.

我该怎么办?

有没有办法取消延期或删除任何附加的处理程序?

有关如何修复我的设计的建议值得欢迎,但我们会优先考虑找到一种方法来删除处理程序或防止它们被触发.

javascript ajax jquery cancellation jquery-deferred

39
推荐指数
2
解决办法
2万
查看次数

有没有办法短路异步/等待流量?

async function update() {
   var urls = await getCdnUrls();
   var metadata = await fetchMetaData(urls);
   var content = await fetchContent(metadata);
   await render(content);
   return;
}
//All the four functions return a promise. (getCdnUrls, fetchMetaData, fetchContent, render)
Run Code Online (Sandbox Code Playgroud)

如果我们想在任何时间从外部中止序列怎么办?

比如,当执行fetchMetaData时,我们意识到不再需要渲染组件,我们想要取消剩余的操作(fetchContent和render).消费者有没有办法从外面中止/取消?

我们可以在每次等待一个条件后检查,但这似乎是一种不太优雅的方式.它仍然会等待当前的操作完成.

javascript promise cancellation async-await ecmascript-next

31
推荐指数
3
解决办法
7882
查看次数

如何在GCD中停止DispatchWorkItem?

我目前正在玩Grand Central Dispatch并发现了一个名为的课程DispatchWorkItem.文档似乎有点不完整,所以我不确定以正确的方式使用它.我创建了以下代码段,并期待一些不同的东西.我希望在调用cancel它之后该项目将被取消.但由于某种原因,迭代仍在继续.我有什么想法我做错了吗?代码似乎对我来说很好.

@IBAction func testDispatchItems() {
    let queue = DispatchQueue.global(attributes:.qosUserInitiated)
    let item = DispatchWorkItem { [weak self] in
        for i in 0...10000000 {
            print(i)
            self?.heavyWork()
        }
    }

    queue.async(execute: item)
    queue.after(walltime: .now() + 2) {
        item.cancel()
    }
}
Run Code Online (Sandbox Code Playgroud)

grand-central-dispatch cancellation swift dispatchworkitem

31
推荐指数
1
解决办法
1万
查看次数

如何在不抛出TaskCanceledExceptions的情况下等待任务?

我有一个创建一些任务的方法,然后在返回之前用WaitAll等待它们.问题是,如果这些任务被取消,那么WaitAll会抛出一个包含大量TaskCanceledExceptionAggregateException.

这意味着WaitAll将在两种不同的情况下抛出异常:

  • 表示真正错误的例外情况.这意味着我们不知道如何处理这种情况; 它们需要作为未处理的异常进行传播,直到它们最终终止进程.
  • 表示用户单击"取消"按钮的例外情况.这意味着任务被取消并清理,程序应继续正常运行.

后者完全符合一个令人烦恼的例外的定义:它是一个完全非特殊情况下抛出的异常,所以我必须抓住它才能恢复正常的控制流程.幸运的是,它很容易捕获,对吧?只需添加catch (AggregateException)- 哦等等,这是在发生致命错误时被抛出的相同类型.

我需要在返回之前等待任务完成运行(我需要知道他们不再使用他们的数据库连接,文件句柄或其他任何东西),所以我确实需要WaitAll或类似的东西.如果任何任务出现故障,我确实希望这些异常作为未处理的异常传播.我只是不想要取消的例外.

如何防止WaitAll为已取消的任务抛出异常?

exception-handling task-parallel-library cancellation

23
推荐指数
1
解决办法
6216
查看次数

SwingWorker:什么时候被称为完成方法?

Javadoc的done()方法SwingWorker:

在doInBackground方法完成后在Event Dispatch Thread上执行.

我已经找到了在取消工人的情况下不是这样的线索.
Done在每种情况下都会被调用(正常终止或取消),但是当cancelled没有排入 EDT时,就像正常终止时那样.

doneSwingWorker取消a的情况下调用时是否有一些更精确的分析?

澄清:这个问题不是关于如何做到cancelSwingWorker.这里假设SwingWorker以正确的方式取消.
而且当它们应该完成时,它不是关于线程仍在工作.

java swing swingworker cancellation

19
推荐指数
2
解决办法
2万
查看次数

什么是取消请求的正确HTTP状态代码

当客户端在发出HTTP请求时取消TCP连接时,我想停止在服务器上执行任何工作并返回空响应.什么HTTP状态代码应该返回这样的响应?

http http-status-codes request-cancelling cancellation

18
推荐指数
4
解决办法
2万
查看次数