javascript - function1 完成后运行 function2

标签 javascript angularjs

我的 Controller 包含一个函数,该函数使用从 View 收集的一些范围值对服务进行两次函数调用。

$scope.sendValues = function () {
    MyService.function1($scope.value1, $scope.value2);

    for(var i = 0; i < $scope.arr.length; i++) {
        $scope.value3 = $(".input" + i).val();
        MyService.function2($scope.value3);
    }
};

这两个服务函数都会发出 http 请求,它们看起来与此类似:

var tempID = 0;

var function1 = function (value1, value2) {
    return $http({
        method: 'POST',
        url: "someUrl",
        data: {
            valeu1: value1,
            value2: value2
        }
    }).success(function (response) {
        tempID = response.data.id;
    });
};

现在第二个函数需要 function1 中的值“tempID”。

var function2 = function (value3) {
    return $http({
        method: 'POST',
        url: "anotherURL",
        data: {
            value3: value3,
            tempID: tempID
        }
   });
};

问题是有时 function2 在 function1 完成之前运行,这会导致 tempID 的声明值为 0。如何确保 function1 在 function2 运行之前完成?我知道我可以将 function2 放入 function1 的成功/完成中,但是如何获取我在 Controller 函数中循环的 View 值。

最佳答案

你可以利用 promise

var function1 = function (value1, value2) {
    return $http({
        method: 'POST',
        url: "someUrl",
        data: {
           valeu1: value1,
           value2: value2
       }
   }).then(function (response) {
       tempID = response.data.id;
       retrun tempID;
   });
};

var function2 = function (value3, tempID) {
return $http({
    method: 'POST',
    url: "anotherURL",
    data: {
        value3: value3,
        tempID: tempID
    }
 });
};

你会这样调用

function1('some value1', 'some value2').then(function(id){
     function2('your value 3', id).then(function(resp){
          // whatever you want to do with this response
    });
});

关于javascript - function1 完成后运行 function2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38031245/

相关文章:

javascript - 如何在新标签页中打开脚本

javascript - pop() 方法 javascript 未给出完整输出

javascript - 字符串正则表达式用户名或电子邮件挂起

javascript - <option> 点击事件 angularjs

javascript - AngularJS 1.5.4 无法使用 bootstrap-ui 模块

javascript - 导入到excel时删除特定列

javascript - 下载文件后空白窗口不会自动关闭

javascript - 在 Javascript 中制作图表 - 问题

使用跨域资源共享 (CORS) 进行 AngularJS spring 安全登录/注销

javascript - AngularJs。 ng-repeat 的问题