在Angular 1.5中,我们可以通过使用$q
服务来实现在多次调用onInit
钩子时只调用一次特定的promise。下面是一个示例代码:
angular.module('myApp', [])
.component('myComponent', {
controller: MyController
});
function MyController($q) {
var vm = this;
var promise;
vm.$onInit = function() {
if (!promise) {
promise = loadData(); // 调用加载数据的函数
}
promise.then(function(data) {
// 处理数据
});
};
function loadData() {
var deferred = $q.defer();
// 异步加载数据
// ...
// 数据加载完成后,解析promise
deferred.resolve(data);
return deferred.promise;
}
}
在上面的代码中,我们在MyController
控制器中定义了一个promise
变量来保存加载数据的promise。在$onInit
钩子中,我们首先检查promise
是否已经存在,如果不存在,则调用loadData
函数来加载数据并返回一个promise。然后,我们使用then
方法来处理promise的解析结果。
这样,无论多次调用$onInit
钩子,只有在第一次调用时会执行加载数据的逻辑,后续的调用会直接使用已存在的promise来处理数据。
推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云函数(SCF)。