[英]How to wait for a function to finish it's execution in angularJS?
我有一個名為validityCheck()
的function,如果用戶有效則返回valid
,如果用戶invalid
則返回無效。 我需要從其他地方調用這個 function 並在if-else
條件下使用結果。
這是 function 定義(這個 function 是在普通的javascript
庫名稱library.js
中定義的):
function validityCheck(userid, serviceid, system) {
$(document).ready(function () {
$.get("https:*******userValidation?serviceid=" + serviceid + "&userid=" + userid + "&system=" + system, function (data, status) {
console.log(data);
return data[0];
});
});
}
現在我想這樣做(此代碼部分在我項目的controller
):
var validity = validityCheck($scope.userid, serviceid, 'abc');
if(validity=="VALID"){
//do something
}else{
//do something
}
我需要等到我得到數據。 我想我需要使用 callback_ 或類似的東西,但我不知道該怎么做。
為什么不返回 angularjs $http
的 promise then
在你的代碼中這樣使用呢?
function validityCheck(userid, serviceid, system) {
let params = {
userid: userid,
serviceid: serviceid,
system: system
};
let request = {
url: "https:*******userValidation",
method: "GET",
headers: {"Content-Type": "application/x-www-form-urlencoded"},
params: params
};
return $http(request).then((response) => {
return response.data[0] ? response.data[0] : '';
});
}
用法:
validityCheck($scope.userid, serviceid, 'abc').then((validity) => {
if (validity === "VALID") {
//do something
} else {
//do something
}
});
PS別忘了注入angularjs $http
更新:在 angular 中注冊 library.js
(function () {
"use strict";
angular
.module("yourAngularModuleName")
.factory("LibraryFactory", LibraryFactory);
function LibraryFactory($http) {
// Add your functions here...
}
})();
更新:使用現有代碼的普通 JavaScript
function validityCheck(userid, serviceid, system) {
return new Promise((resolve, reject) => {
$.get("https:*******userValidation?serviceid=" + serviceid + "&userid=" + userid + "&system=" + system, function (data, status) {
console.log(data);
resolve(data[0]);
});
});
}
在我提供的 USAGE 中使用相同的代碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.