Mat*_*ood 2 javascript ajax asynchronous angularjs angular-promise
我以前从未写过承诺,但我觉得这段代码传达了我的意图.
问题:在我的http请求完成,转换并返回之后,
如何在init块中异步触发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);
});
});
}
Run Code Online (Sandbox Code Playgroud)
您不需要使用$q$ http方法创建自己的promise,默认情况下会返回一个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(){...});
});
}
Run Code Online (Sandbox Code Playgroud)
码
您可以通过.then对该方法执行来调用promise 方法.
function init() {
var promise = getLangData(languageCode);
promise.then(function(mappedData) {
matchData(mappedData);
countData(mappedData);
});
};
Run Code Online (Sandbox Code Playgroud)