javascript - 在对 api 的 $http 请求成功后,Angular $q 库将方法链接起来?

标签 javascript angularjs ajax asynchronous angular-promise

我以前从未写过 promise ,但我觉得这段代码表达了我的意图。

问题: 在我的 http 请求完成、转换并返回后,如何在 init block 中异步触发 matchData()countData()

 function getLangData(langCode) {

    var url = "https://translate.google.com/translate_a/l?cb=JSON_CALLBACK";
      return $q(function(resolve, reject) {    
      $http.jsonp(url, {
        params: {...}
      })
        .success(function (translateAPIData) {
                 return translateAPIData.map(function(){...});
          });
        });

      });
  }

function init() {
  var promise = getLangData(languageCode);
  promise.then(function(mappedData) {
     matchData(mappedData);
  });
  promise.then(function(mappedData) {
     countData(mappedData);
  });  

  }); 
}

最佳答案

您不需要使用 $q 创建您自己的 promise ,因为 $http 方法默认返回一个 promise ,您可以通过调用 .then 方法来利用它在上面。

function getLangData(langCode) {

    var url = "https://translate.google.com/translate_a/l?cb=JSON_CALLBACK";
      //returned promise object from method
      return $http.jsonp(url, {
        params: {...}
      })
      .then(function (response) {
           var translateAPIData = response.data;
           return translateAPIData.map(function(){...});
      });
}

代码

您可以通过在该方法上执行 .then 来调用 promise 方法。

function init() {
  var promise = getLangData(languageCode);
  promise.then(function(mappedData) {
     matchData(mappedData);
     countData(mappedData);
  }); 
};

关于javascript - 在对 api 的 $http 请求成功后,Angular $q 库将方法链接起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34320623/

相关文章:

javascript - "Thinking in AngularJS"如果我有 jQuery 背景?

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

javascript - Asp.net RegisterStartupScript 未触发

javascript - 两个相互冲突的按钮 HTML

javascript - 使用socket.io从另一台服务器接收客户端变量

javascript - 无法在 ionic 中隐藏启动屏幕

javascript - 重用数组引用而不是克隆/复制 - Angular Bootstrap 导航树的多个实例

javascript - Javascript 函数中的数组作用域在内部 AJAX 循环之外为空

javascript - GM_xmlhttpRequest responseText 在 Firefox 中为空,但在 Chrome 中完美

javascript - 为什么 eval 在 javascript 中不安全?