gpt4 book ai didi

javascript - 将嵌套的 promise 返回给父函数

转载 作者:行者123 更新时间:2023-11-29 19:33:02 25 4
gpt4 key购买 nike

在大多数 angularjs 教程中,我看到 promise 链会导致更改范围变量。

$http.get(someURL).then(function (value) {
$scope.someValue = value;
});

是否可以将该值返回给父函数?我尝试过的所有方法都返回另一个 promise 。

$scope.test = function(){
return $http.get(someURL).then(function (value) {
return value;
});
};

$scope.test = function(){
var deferred = $q.defer();
$http.get(someURL).then(function (value) {
deferred.resolve(value);
});
return deferred.promise;
}

我不想链接另一个 promise ,只需返回 json,这样我就可以做这样的事情:

<button ng-click='some_vars = test()'>Get ajax</button>
<ul ng-repeat='var in some_vars'>
<li>{{var.title}}</li>
</ul>

最佳答案

IMO 这是你应该如何做的:

在你的 Controller 中这样做:

$scope.some_vars=[];
$scope.loadVars = function(){
$http.get(someURL).success(function (data) {
$scope.some_vars=data;
});
};

在你看来这样做:

<button ng-click='loadVars()'>Get ajax</button>
<ul ng-if="some_vars.length>0" ng-repeat='var in some_vars'>
<li>{{var.title}}</li>
</ul>

容易多了,对吧?

但是如果您使用的是 1.2.0-rc.3 之前的 Angular 版本。并且您真的想自动解包 promise(我强烈建议您不要那样做),你必须在模块的配置中更改 $parseProvider 的设置,如下所示:

.config(function($parseProvider){
$parseProvider.unwrapPromises(true);
})

Working Example

Promise unwrapping 在 1.2 版本中被移除,并且在 1.2.0-rc.3 版本中被完全弃用。

您可能想看看这个文档:Migrating from Previous Versions .

$parse: due to fa6e411d, promise unwrapping has been removed. It has been deprecated since 1.2.0-rc.3. It can no longer be turned on. Two methods have been removed:

     $parseProvider.unwrapPromises 

$parseProvider.logPromiseWarnings

关于javascript - 将嵌套的 promise 返回给父函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26432377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com