将函数设置为在通过另一个函数调用时等待响应

Set a function to await response when calling through another function

提问人:TMR 提问时间:12/16/2021 最后编辑:TMR 更新时间:12/16/2021 访问量:53

问:

使用 JavaScript 和 AngularJS,我有一个控制器函数,希望根据服务调用的返回来设置布尔值,等待 API 调用的返回。如何编写控制器函数来等待 API 响应?

控制器。。。

    var someBoolValue = false;

function firstCheck() {
 // function checks other things
 
 if (someCheck) {
 
 // how do I set someBoolValue to await the response, this code did NOT work

 SomeService.CheckforSomething(data, moreData).then(function (response) {
     someBoolValue = response;
 });
 
}

服务。。。

function CheckforSomething(data, moreData) {
    var anImportantNumber = null;
    var anotherNumber = 456;
    // function does other things
    
    anImportantNumber = 123;
    
    if (someCondition) {
        ApiService.GetMyData()
        .then(function (data) {
            anImportantNumber = data.ThisValue.WRT;
        }
    }
    
    return (anImportantNumber != anotherNumber);
}

API 服务...

function GetMyData() {
    uri = 12345;
    $http.get(uri)
    .then(function (response) {
        dererred.resolve(response.data)
    }
    
    return deferred.promise;
}
JavaScript AngularJS 异步

评论

0赞 about14sheep 12/16/2021
现在您正在设置,因此它不会是布尔值。someBoolValueanImportNumber
0赞 TMR 12/16/2021
是的,我试图保持简单的错误。我已经更新了问题。
1赞 Bergi 12/16/2021
避免延迟反模式,不要从异步回调中分配给全局变量,而是始终返回 promise!
0赞 Thomas 12/19/2021
“我有一个控制器函数,希望根据服务调用的返回来设置布尔值” 这种方法的问题在于,依赖于该变量的任何内容都无法知道何时/是否设置/更改了值。已经建立了承诺来解决这个确切的问题。

答: 暂无答案