当等待承诺解决时,jquery无法获得$ .when

时间:2018-03-14 05:37:24

标签: javascript jquery angularjs

我的情况让我发疯,因为我似乎无法让它正常发挥。我有一种情况,可以选择填写总共3种表格。但是,2并不总是需要填写,只有一个必须填写。问题是必须填写的主要表单需要等待其他表单中的任何一个填充,因为它需要在保存之前将其ID作为查找存储在主表单中。这应该是相对简单的,但我已经尝试了很多东西,并且无法获得$ .when正常工作以等待承诺解决。

我有一个服务,我调用一个函数postItem,这是一个$ ajax的后调用

我完全遵循这一点,但它不起作用:

https://dzone.com/articles/promises-and-deferred-objects

var promise1, promise2;
var promise_array = [];

if(vm.receivables) {
 promise1 = user.postDealItem(args....).then(function(response) {
           vm.model.recId = response.Id;
           return response
});
}

if(vm.standard) {
 promise2 = user.postDealItem(args...).then(function(response) {
           vm.model.stdId = response.Id;
           return response
});
}

if(promise1 != null) promise_array.push(promise1);
if(promise2 != null) promise_array.push(promise2);

$.when.apply($,promise_array).done(function(response) {
    //never gets to this point
});

在需要其他2个表格之前,我有一个单一的表格可以完成,然后一旦完成,我有其他几个被保存的子列表,它通过链接承诺而没有问题......

现在它超过代码的$ .when部分,点击块的结尾,然后进入一堆角度函数,然后跟踪++然后在那里的某个地方出错并重新加载主页面。我正在测试这个只运行另一个表单,并且初始表单确实正确保存,承诺只是没有正确解决...

任何帮助都会非常感激,我最终知道为什么这不起作用,因为看起来应该没问题......

1 个答案:

答案 0 :(得分:0)

在我看来,你只是在postDealItem之后错过了()。改变它所说的两个地方 user.postDealItem.then(function(response) {user.postDealItem().then(function(response) {