javascript - Deferred 和 Promise 功能无法正常工作

标签 javascript jquery

我的要求很简单,但仍然无法解决,我的代码出了什么问题。 我有验证功能,它从服务器获取数据。我想确保它应该等到 ajax 请求完成。请建议使用哪个延迟函数。

 // Validate function is defined under variable.....

 validate : function (field){
   field.valid = false;
   // accessSer is a common object where AJAX request defined
    accessSer.request("checkDuplicate", field.value, function(response){
     if(response.success == true){
          field.valid = true;
     }
    });
  }


 //i tried below deferred function $.when to call validate function.


 $.when(opts.validate(this)).then( function(){
                console.log(this.valid); // always have undefined
            });

 console.log(field.valid); // always have false.

最佳答案

您需要从验证函数返回accessSer.request(...)结果。尝试这样的事情:

validate: function (field) {
    field.valid = false;
    return accessSer.request("checkDuplicate", field.value, function (response) {
        return field.valid = (response.success == true);
    });
}

opts.validate(this).then(function (valid) {
    console.log(valid);
    console.log(field.valid);
});

关于javascript - Deferred 和 Promise 功能无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33350009/

相关文章:

jquery - 鼠标在打开的图层上移动

javascript - 在具有多个元素的元素中查找特定类

javascript - 缩放后的kinetic.js层宽度

javascript - Node JS -URL 参数简化如 example.com/profile/me

javascript - Viewbag 改变 onclick 中的值?

jquery - 我有一个函数在调用媒体查询时仍在影响 div 的位置,我想停止它

php - 仅在有更多数据要加载时显示按钮

javascript - 如何从异步调用返回响应?

javascript - AngularJS 实现 ui-grid

javascript - 开始拖动后删除/隐藏原始拖动