从客户端节点JS Angular停止多个异步调用

时间:2014-09-08 15:39:39

标签: node.js angularjs

我有一个单页应用程序,它从节点js服务器获取对象列表。但是,如果用户在加载其余相关对象之前选择列表中的第一项,则需要取消该请求。我可以在客户端取消请求(有角度),但是不知道如何在节点中已经启动的呼叫上取消请求!

下面的代码是我用来调用节点api的方法,能够在客户端取消该请求。

getDiscovery : function(ids) {
      var Ids = [],
        apiUrl = '/api/Something/ids',
        self = this,
        deferredAbort = $q.defer();

      // Initiate the AJAX request.
      var request = $http({
        method: "get",
        url: apiUrl,
        params: {
          ids: JSON.stringify(ids) 
        },
        timeout: deferredAbort.promise
      });

      var promise = request.then(
        function(response) {
        return(response.data);
        },
        function(response) {
          return($q.reject( "Something went wrong" ));
        }
      );

      promise.abort = function() {
        deferredAbort.resolve();
      };

      promise.finally(
        function() {
          console.info( "Cleaning up object references." );
          promise.abort = angular.noop;
          deferredAbort = request = promise = null;
        }
      );

      return(promise);

}

这是节点api上需要取消的方法

exports.getItemsDiscovery = function(req, res){
var Items = JSON.parse(req.query.ids);


async.each(Items,
    function(Item, callback){
        method.getSomething(Item.Id, function(data){
            console.log('Got data for', item.Id);
            callback();
        });
    },
    function(err) {
        return res.send(Items);
});
};

路线是

app.get(' / api / ids',something.getItemsDiscovery);

非常感谢任何帮助

罗布

0 个答案:

没有答案