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
从异步子函数返回AngularJS结果_Angularjs - Fatal编程技术网

从异步子函数返回AngularJS结果

从异步子函数返回AngularJS结果,angularjs,Angularjs,我有一个返回字符串值的子函数,它驻留在父函数中。我知道GetEncCreds函数可以工作,因为下面返回的警报确实正确返回了credString值。我遇到的问题是,当我从另一个函数调用此函数时,GetEncCreds,我的encCreds变量是undefined。我不知道如何将结果传递给父函数 function GetEncCreds(domain, userName, password){ var credString = ""; genCredApi.save({

我有一个返回字符串值的子函数,它驻留在父函数中。我知道
GetEncCreds
函数可以工作,因为下面返回的警报确实正确返回了
credString
值。我遇到的问题是,当我从另一个函数调用此函数时,
GetEncCreds
,我的
encCreds
变量是
undefined
。我不知道如何将结果传递给父函数

function GetEncCreds(domain, userName, password){
        var credString = "";
       genCredApi.save({
            domain: domain,
            userName: userName,
            password: password
        }).$promise.then(function (result){
           credString = result.Credentials;

          //This below alert works
           alert(credString);
           return;

        })

        return credString;

    }

function onRdsAssociatedDocsClicked() {
        var encCreds = GetEncCreds('ax-rds', 'axadmin', 'Pa$$word');
}

修改服务以返回承诺:

function GetEncCreds(domain, userName, password){
   var credString = "";
   ̶g̶e̶n̶C̶r̶e̶d̶A̶p̶i̶.̶s̶a̶v̶e̶(̶{̶
   var promise = genCredApi.save({
        domain: domain,
        userName: userName,
        password: password
    }).$promise.then(function (result){
       credString = result.Credentials;
      //This below alert works
       alert(credString);
       ̶r̶e̶t̶u̶r̶n̶;̶
       return credString;
    })
    ̶r̶e̶t̶u̶r̶n̶ ̶c̶r̶e̶d̶S̶t̶r̶i̶n̶g̶;̶
    return promise;
}
从承诺中提取数据:

function onRdsAssociatedDocsClicked() {
    ̶v̶a̶r̶ ̶e̶n̶c̶C̶r̶e̶d̶s̶ ̶=̶ ̶G̶e̶t̶E̶n̶c̶C̶r̶e̶d̶s̶(̶'̶a̶x̶-̶r̶d̶s̶'̶,̶ ̶'̶a̶x̶a̶d̶m̶i̶n̶'̶,̶ ̶'̶P̶a̶$̶$̶w̶o̶r̶d̶'̶)̶
    var promise = GetEncCreds('ax-rds', 'axadmin', 'Pa$$word');
    promise.then(function(data) {
        var encCreds = data;
        console.log(encCreds);
    })
}
promise的
.then
方法返回一个新的promise,该promise通过
successCallback
errorCallback
的返回值来解析或拒绝(除非该值是promise,在这种情况下,它是使用该promise中解析的值来解析的)

有关详细信息,请参阅