Javascript 我怎么能让多个指令在一个服务中调用同一个承诺,只调用一次?
因此,我有多个自定义指令在服务中的同一个函数中调用承诺,该服务使用承诺获取数据。服务中的这个函数被命中4次(因为有4个指令调用它)。这就是问题所在。我只想让它被调用一次,而不是四次。我该怎么做 另外,很抱歉,我不能提供我的代码。这只是一个服务,要求承诺,然后像这样返回 服务:Javascript 我怎么能让多个指令在一个服务中调用同一个承诺,只调用一次?,javascript,angularjs,Javascript,Angularjs,因此,我有多个自定义指令在服务中的同一个函数中调用承诺,该服务使用承诺获取数据。服务中的这个函数被命中4次(因为有4个指令调用它)。这就是问题所在。我只想让它被调用一次,而不是四次。我该怎么做 另外,很抱歉,我不能提供我的代码。这只是一个服务,要求承诺,然后像这样返回 服务: return { GetData: function() { return processData.then(function(response){ return response });
return {
GetData: function() {
return processData.then(function(response){
return response
});
processData
只是在文件的前面进行缓存,在这里我使用$http.get
获取数据
指令:
serviceName.GetData().then(function(response){
//Do Stuff and what not
})
可以存储promise对象,并且可以使用
then()
访问该对象的第一个指令将设置promise变量,然后所有其他指令将访问相同的promise可以存储promise对象,并且可以使用
then()
访问该变量的第一个指令将设置PROMICE变量,所有其他指令将访问相同的PROMICE为什么不在控制器内调用该特定函数,将控制器作用域上检索到的数据存储在作用域变量中,并将该变量绑定到指令,而不是在每个指令中调用该函数?此外,您还可以在指令中添加
ng if=“dataReady”
,以便仅在数据可用时添加这些指令。这也是一个面向爱好者和专业开发人员的网站,我们希望保持其专业性。使用所有的大写和类似“lol”的东西都不是这样。为什么不在控制器内调用该特定函数,将控制器作用域上检索到的数据存储在一个作用域变量中,并将该变量绑定到指令,而不是在每个指令中调用该函数?此外,您还可以在指令中添加ng if=“dataReady”
,以便仅在数据可用时添加这些指令。这也是一个面向爱好者和专业开发人员的网站,我们希望保持其专业性。使用所有的大写字母和像“lol”这样的东西并不是这样。
var promise = null;
return {
GetData: function() {
if (!promise) {
promise = proccessData.then(function(response) {
return response
});
}
return promise;
}