标签: jquery-deferred

在jQuery中取消延迟的Promise

如何在不从DOM中删除元素的情况下取消承诺?

小提琴

我运行了这段代码:

$("#box")
  .delay(2000)
  .show("slow")
  .delay(2000)
  .promise()                            
  .then(function(){log("Done");});
Run Code Online (Sandbox Code Playgroud)

在此之后,有没有办法取消承诺?双方clearQueue()stop(true)没有工作,因为这不是我想要取消的动画.我看到remove()应该这样做......但我只想停止承诺,而不是删除整个元素.

javascript jquery promise jquery-deferred

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

在jQuery的Deferred对象中抛出一个错误

我有一个$.ajax承诺,想检查我的(语法上有效)响应是否包含错误,在这种情况下触发被拒绝的状态.

我使用自己的诺言库来轻松处理这些任务.我真的不喜欢jQuery的Promise(缓存)实现及其Deferred对象,可能忽略了一些东西,因为我很少使用它.我认为要走的路只是使用.then(),这似乎相当复杂:

return $.ajax(...).then(function success(response) {
    var problem = hasError(response);
    if (problem) {
        var error = new $.Deferred;
        error.reject(problem);
        return error;
    } else
        return response;
});
Run Code Online (Sandbox Code Playgroud)

这应该返回一个在网络错误或响应问题时被拒绝的承诺.但是回归被拒绝的推迟真的是[唯一|最好|最短]的方式去?

我也会在ajax选项中自己如何处理这些"错误抛出响应处理程序"的帮助,我找不到关于它们的好文档.


免责声明:不,我无法更改服务器响应.问题检测方法是同步的.我不想使用其他库,我对jQuery解决这个问题的方式特别感兴趣.

javascript error-handling promise jquery-deferred

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

jQuery延迟了一系列函数

我有一个充满这样功能的对象:

var functions = {
    fun1 : function(){ ... }
    fun2 : function(){ ... }
    fun3 : function(){ ... }
};
Run Code Online (Sandbox Code Playgroud)

对象键都在数组中引用,如下所示:

var funList = ['fun1','fun2','fun3'];
Run Code Online (Sandbox Code Playgroud)

我一直在使用该数组来运行所有函数:

$.each(funList, function(i,v){
    functions[v].call(this, args);
});
Run Code Online (Sandbox Code Playgroud)

我的问题是这个,我需要一些方法来推迟所有功能的运行,这样:

  1. 在$ .each循环中,函数以串行方式运行
  2. 一种延迟后续代码运行的方法,直到数组/对象中的所有函数都完成为止.

我已经读过我应该使用$ .map方法,但是我很难把它包裹起来.

javascript jquery asynchronous sequential jquery-deferred

11
推荐指数
1
解决办法
3886
查看次数

JQuery延迟更改"this"

我试图让一个javascript对象运行一个延迟方法,当它的.done()调用同一个对象中的一个函数时.我有问题,因为"this"成为延迟对象而不是调用它的对象.

PageObject.prototype.successFunction = function() {
  console.log(arguments);
  return console.log(this.name + " Success function called");
};

PageObject.prototype.loadPage = function(url) {
  return $.when($.mobile.loadPage("pages/" + url))
    .done(this.successFunction);
};

var pg = new PageObject();
pg.loadPage("test.html");
Run Code Online (Sandbox Code Playgroud)

如何将"this"发送到successFunction?这个PageObject也将被其他人扩展,因此在运行successFunction时知道"this"将非常方便.

这似乎很简单,可能有一个简单的答案.我正在研究.apply(),但我不确定它是否有帮助.关于堆栈溢出的这篇文章有点帮助,但是它把它放入.done()函数的那一刻就打破了.

函数作为参数(带参数) - JavaScript

javascript jquery jquery-deferred

11
推荐指数
1
解决办法
5956
查看次数

Jquery ajax完成回调没有响应201

我有一个ajax帖子:

$.post("/api/v1/payment_methods/create_credit_card", values)
.done (response) ->
  console.log("GOOD JOB")
.fail (response) ->
  console.log("Adas")
Run Code Online (Sandbox Code Playgroud)

响应是201,然而,完成似乎没有捕获它,而是它将失败.我认为201会被认为是成功的,并且会被完成捕获.为什么它不起作用的任何想法?

注意:上面的代码是在coffeescript中,它并没有真正影响问题,但解释了我的语法

jquery coffeescript jquery-deferred

11
推荐指数
1
解决办法
4980
查看次数

清除/删除附加处理程序到$ .Deferred Objects

非常简单的问题,我想我可以解决这个问题,但答案已经让我失望了.

是否可以清除/删除已连接的处理程序到延迟对象完成/失败/始终队列.

var dfd = $.Deferred()

dfd.done(foo).fail(bar);

// User interacts with the page in a way that I do not want to fire foo or bar 
// when dfd is resolved or rejected

<<answer here>>
Run Code Online (Sandbox Code Playgroud)

jquery jquery-deferred

11
推荐指数
1
解决办法
3042
查看次数

使用jquery检查Internet连接

我试图通过向服务器发送GET请求来检查互联网连接.我是jquery和javascript的初学者.我没有使用navigator.onLine我的代码,因为它在不同的浏览器中的工作方式不同.到目前为止这是我的代码:

var check_connectivity={
        is_internet_connected : function(){
            var dfd = new $.Deferred();
            $.get("/app/check_connectivity/")
            .done(function(resp){
                return dfd.resolve();
            })
            .fail(function(resp){
                return dfd.reject(resp);
            })
            return dfd.promise();
        },
}
Run Code Online (Sandbox Code Playgroud)

我将此代码称为不同的文件:

if(!this.internet_connected())
        {
            console.log("internet not connected");
            //Perform actions
        }
internet_connected : function(){
        return check_connectivity.is_internet_connected();
},
Run Code Online (Sandbox Code Playgroud)

is_internet_connected()函数返回一个延迟对象,而我只需要一个真/假的答案.谁能告诉我如何实现这个目标?

javascript jquery jquery-deferred

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

jQuery,带有url数组的$ .ajax

我有一个简单的url数组,我想用jQuery加载每一个.我正在使用$.get,但我似乎无法使用它$.Deferred,所以我切换到$.ajax- 我几乎让它工作,但我得到的结果是......奇怪的.我希望有人能帮我把这项工作做得更好.

var results = [], files = [
   'url1', 'url2', 'url3'
];

$.when(
   $.ajax(files[0]).done(function(data) { 
      results.push(data); console.log("step 1.0"); 
   }),
   $.ajax(files[1]).done(function(data) { 
      results.push(data); console.log("step 1.1"); 
   }),
   $.ajax(files[2]).done(function(data) {
      results.push(data); console.log("step 1.2"); 
   })
).then(function(){
   console.log("step 2");
});
Run Code Online (Sandbox Code Playgroud)

这应该输出..

  • 步骤1.0
  • 步骤1.1
  • 步骤1.2
  • 第2步

然后该results数组包含所有3个ajax请求的结果.这可能吗?

arrays ajax jquery promise jquery-deferred

11
推荐指数
1
解决办法
3481
查看次数

Javascript Promise vs jQuery Deferred

Javascript Promises与jQuery Deferred Objects的优缺点是什么?

例如,他们每个人都有什么问题,如果有的话?

一个堆栈溢出成员说:

"......真正的承诺是真实的,虚假的承诺是假的."

这是什么意思?

javascript jquery promise jquery-deferred

11
推荐指数
1
解决办法
5821
查看次数

在Angular JS中没有调用Promise回调

如果我把connectdoStuff,我得到的消息"套接字连接",但callback不叫.我在这里错过了什么?

 $scope.connect = function() {
    var defer = $q.defer();
    ws = new WebSocket("ws://server.com:port");
    ws.onopen = function(){  
        console.log("Socket connected");
        defer.resolve("socket connected");
    };
    return defer.promise;
}

$scope.doStuff = function() {
    $scope.connect().then(function(data) {
        console.log("And we're off!", data);
    });
}
Run Code Online (Sandbox Code Playgroud)

websocket jquery-deferred angularjs

10
推荐指数
2
解决办法
9773
查看次数