在angular.extend()中向变量返回一个承诺的值

Return a promised value to variable in angular.extend()

本文关键字:返回 变量 一个承诺 angular extend      更新时间:2023-09-26

在下面的示例中,如何将 myVar 设置为异步服务方法返回的值

angular.extend(this, {
    myVar: (function() {
        getVal();
    })()
});
function getVal() {
    var d = $q.defer();
    MyFactory.Get()
        .then(function (resp) {
            d.resolve(resp.data);
        });
    return d.promise; // myVar should equal resp.data
};

我想我表现出我对承诺/延期缺乏理解,所以建议会很棒。

由于 myVar 是一个变量,您可以从控制器中的任何位置设置它。在初始化中,您可以将其分配给回退值或将其设置为未定义。并在异步调用成功后设置它。

angular.extend(vm, {
    myVar: 'fallback'
});

或:

angular.extend(vm, {
});

然后:在控制器中:

getVar();
function getVar() {
    getVal().then(function(data){
        vm.myVar = data;
    });
}
function getVal() {
    var d = $q.defer();
    MyFactory.Get()
        .then(function (resp) {
            d.resolve(resp.data);
        });
    return d.promise; // myVar should equal resp.data
};

或更有效:

getVal();
function getVal() {
    MyFactory.Get()
        .then(function (resp) {
            vm.myVar = resp.data;
        });
};

this更改为vm,以消除与关键字可能引发this冲突。