Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不停的承诺_Javascript_Angularjs - Fatal编程技术网

Javascript 不停的承诺

Javascript 不停的承诺,javascript,angularjs,Javascript,Angularjs,我已经用Angular编写了以下承诺,但它似乎不想等到XHR数据返回。不知道我做错了什么 someAPICall.save({}, bigObject, function(data) { }).$promise.then(function(data) { //shouldn't it wait here for the data to be returned? qResponse = data;

我已经用Angular编写了以下承诺,但它似乎不想等到XHR数据返回。不知道我做错了什么

someAPICall.save({}, bigObject, function(data) {
            }).$promise.then(function(data) {
              //shouldn't it wait here for the data to be returned?
              qResponse = data;
            }, function(error) {
              console.log("error: " + error.status);
            })
编辑,这里是使用$resource的工厂本身:

.factory("someAPICall", function($resource){
  var resource = $resource(serverPath + '/path/to/data', {}, {
    save: {
      method: "POST",
      headers: {
        //header info
        }
      }
    }
  });
  return resource;
})

在这里,我只是想试探一下,但在调用
save
时,似乎有一个不必要的回调函数参数。(在这种情况下,它甚至是空的)

最近,我在处理$resource时跳过了所有承诺,因为我的应用程序不需要处理多个承诺的任何可组合性。因此,我通常只使用成功和失败处理程序(代码中有一个空的成功处理程序)

试试这个:

someAPICall.save({}, bigObject, function(successData) {
    // called asynchronously on success. No need for promises at all
}, function(errorData) {
    // called asynchronously on failure. No need for promises at all
});
或者(不知道是否有效)尝试在不传入回调的情况下获取promise对象

someAPICall.save({}, bigObject).$promise;

如果someAPICall.save(…).$promise比yes给你一个承诺。这里的
$promise
是什么?找不到有关它的任何信息。尝试并删除它(例如写入
someApiCall.save(…)。然后(…);
取而代之)所谓的等待不会在随后的回调中发生。一旦承诺实现了,就会调用onCompleted回调。然后就不起作用了。返回someAPICall.save(…)。则不是函数。我几个月前写过这个函数,从一个讨论$q的替代品的页面上得到了代码……当然我找不到。@JaromandaX所以我必须重写整个过程?这就解决了它!谢谢你,杰西。