Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在一个承诺里面_Javascript_Angularjs - Fatal编程技术网

Javascript 在一个承诺里面

Javascript 在一个承诺里面,javascript,angularjs,Javascript,Angularjs,我试图创建一个返回承诺的函数,在该函数中,我有一个angular.forEach返回承诺。 下面是一个示例代码: function func1() { func2(demoText, demoObject).then(function(response) { console.log(response); }); } function func2(demoText, demoObject) { var deferred = $q.defer();

我试图创建一个返回承诺的函数,在该函数中,我有一个angular.forEach返回承诺。 下面是一个示例代码:

function func1() {
    func2(demoText, demoObject).then(function(response) {
        console.log(response);
    });
}

function func2(demoText, demoObject) {
    var deferred = $q.defer();
    var returnString = "someReturnString";
    var keepGoing = true;
    var loopPromises = [];

    angular.forEach(demoObject, function(value, key) {
        if(keepGoing) {
            var deferred2 = $q.defer();
            loopPromises.push(deferred2.promise);

            if(value.type == 'other') {
                someService.getDataFromServer()
                .then(function(serverResponse) {
                    returnString = serverResponse;
                    deferred2.resolve();
                });
                keepGoing = false;
            }
            else {
                deferred2.resolve();
            }                                        
        }
    });

    return $q.all(loopPromises).then(function () {
        deferred.resolve(returnString);
        return deferred.promise;
    });
}
现在返回的值是“someReturnString”,这意味着在我从服务器获取结果之前会重新调整该值


如何解决这个问题?

您使用的是什么版本的angularjs?angularjs版本1.6.9