gpt4 book ai didi

javascript - 如何从链式 promise 更新我的 View 模型?

转载 作者:行者123 更新时间:2023-12-03 05:04:46 24 4
gpt4 key购买 nike

我对 Promise 还很陌生。我很难尝试从 2 个链式 promise 更新我的 View 中使用的对象:

function Test($resource, FC, UserDetailsService) {
'ngInject';

var self = this;

self.data = {

};

function getTestData() {
firstPromise.then(function(response) {

//I want self.data to be displayed in my view
angular.extend(self.data, response);
//Now my view should display my object

resource().get(user)
.$promise.then(function(responsePts){
//And THEN update/refresh my view here
angular.extend(self.data, responsePts);

});
});
};

self.getTestData = getTestData;

};

编辑:firstPromise 在另一个服务中公开,并由其他服务使用:

$resource(apiUrl).get(user).$promise.then(function(bookData){
angular.extend(self.bookings, bookData);
});

在我的 Controller 中:

function TestController(Test) {
'ngInject';

var $ctrl = this;

$ctrl.testData = {};

Test.getTestData();
$ctrl.testData = Test.data;

};

相反,在解决第二个 Promise 之前,self.data 不会显示。当第一个 promise 得到解决时,如何使我的对象直接可用于我的 Controller ?

最佳答案

如果 firstPromise 是 $q 服务 promise ,则 View 应该更新。由于 View 未更新,因此使用 $q.when() 将未知 promise 转换为 $q 服务 promise :

function getTestData() {
//firstPromise.then(function(response) {
$q.when(firstPromise).then(function(response) {

//I want self.data to be displayed in my view
angular.extend(self.data, response);
//Now my view should display my object

//return to chain
return resource().get(user).$promise;
}).then(function(responsePts){
//And THEN update/refresh my view here
angular.extend(self.data, responsePts);

});
};

$q 服务 promise 与 AngularJS 框架及其摘要周期集成。

$q.when(value)

Wraps an object that might be a value or a (3rd party) then-able promise into a $q promise. This is useful when you are dealing with an object that might or might not be a promise, or if the promise comes from a source that can't be trusted.

-- AngularJS $q Service API Reference - $q.when

关于javascript - 如何从链式 promise 更新我的 View 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42057083/

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