【发布时间】:2018-05-09 10:18:53
【问题描述】:
在我的 Angular 应用中,在以下场景中,我遇到了问题。
一共有三个文件
mainCtrl.js
在应用程序加载时,init() mainCtl.js 将被触发,它将像这样调用 flowService
flowService.configureSteps();
它将调用 flowService 并调用服务器来获取数据。
flowService.js
function configureSteps() {
salesService.getSalesOrder().then(function(response) {
salesService.setSalesOrder(response);
});
}
这会将salesOrder 保存到要在subCntrl 中检索的服务中
subCtrl.js
在 subCntrl 的初始化中,我试图获取我保存在服务中的 salesOrder。
function init() {
salesService.getSalesOrder();
}
问题
当我像这样点击网址时
http://www.myapp.com/review#/subpage
- 它会打到mainCtrl
- 它会从那里调用服务并调用服务器
- 由于是异步的,所以会被重定向到subCntrl
- 它将尝试检索尚未从服务器接收到的 salesOrder。
如何实现同步。 ?
【问题讨论】:
-
您可以让
getSalesOrder返回一个 Promise,该 Promise 解决一次(或如果)setSalesOrder被调用。你不make it synchronous- 你更改你的代码来处理异步。 -
How can this be made synchronous?不能。如果可以,它不应该。你倒着想。与其试图按照自己的方式改变事物,不如学习如何处理异步并接受它的力量。 -
@JeremyThille 您能否建议以哪种方式处理这种情况。 ?
-
@CertainPerformance 你的意思是使用 $q 服务?
-
subCntrl是如何在流程中被调用的?可能有一种方法肯定会奏效,但我需要了解流程
标签: javascript angularjs ajax asynchronous