我的情况让我发疯,因为我似乎无法让它正常发挥。我有一种情况,可以选择填写总共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部分,点击块的结尾,然后进入一堆角度函数,然后跟踪++然后在那里的某个地方出错并重新加载主页面。我正在测试这个只运行另一个表单,并且初始表单确实正确保存,承诺只是没有正确解决...
任何帮助都会非常感激,我最终知道为什么这不起作用,因为看起来应该没问题......
答案 0 :(得分:0)
在我看来,你只是在postDealItem之后错过了()
。改变它所说的两个地方
user.postDealItem.then(function(response) {
至
user.postDealItem().then(function(response) {
。