javascript - 如何在 Angular 中掌握这个条件 promise ?

标签 javascript angularjs

我必须解决 angularjs 中的一个问题,但现在我被困了几个小时。

如果有这个伪代码:

doSomething(param){

    var res;
    if(param = "ok"){
        //do some api calls with promise
        res = promise result
     }

    doSomeStuff(){
        //if i got res variable, continue with this...
        // else
        //if res is not set, do this...
    }

所以我的问题是:我怎样才能做这样的事情? doSomeStuff 函数需要知道变量 res 是否已设置。因此,如果未设置变量 res,则需要等待或继续。

最佳答案

如果您只需要一次 api 调用:使用 $http 的 then()

doSomething(param){
    if(param == "ok"){
        //do some api calls with promise
        $http({
           method: 'GET',
           url: url
        }).then(
           function success(response) {
                doSomeStuff(response);
           },
           function error(response) {
              console.log(response);
           }
        );
    }      
}

如果您需要进行多次 APi 调用:

var doSomething = function (param){
    if(param == "ok"){
       // imagine that listeUrl is an array of url for api calls   
       var promises = [];
       for (var i in listeUrl ) {

          promises.push( //Push the promises into an array
              $http({
                 method: 'GET',
                 url: listeUrl[i]
              }).then(function success(response) {
                 return response.data;
              })
          );
       }
       return $q.all(promises); // Resolve all promises before going to the next .then
    }      
}

doSomething("ok").then(function(res){
    doSomeStuff(res);
});

关于javascript - 如何在 Angular 中掌握这个条件 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39710441/

相关文章:

javascript - 如何在 ReactJS 中使用适当的、可测试的事件处理程序制作可重用的组件

android - 制作我的 Ionic AngularJS 程序的 iOS 应用程序

javascript - 如何增加动物区的值(value)?使用 javascript 和服务器端函数

javascript - 在(同步)Ajax 期间停止浏览器锁定?

javascript - 全部折叠并默认打开第一个 Accordion

javascript - 使用 .match() 验证字符串

javascript - Angular 异步事件的问题

javascript - Angular 服务调用另一个服务

javascript - Angularjs 如何生成 HTML 代码文档

javascript - 在 AngularJS 指令隔离范围中有一个方法是最佳实践吗?