如何在Angular中使同步调用成为异步调用?

时间:2016-03-09 16:52:23

标签: sql-server angularjs node.js

我有一个显示内部流程状态的应用。它还有一个单独的视图,允许您设置新记录。要设置新记录,请填写表单,并在提交后致电nodejs服务器:

  • 将记录插入表格
  • 启动存储过程
  • 将您转回状态页

这里的问题是,当发生这种情况时页面会挂起,因为有时存储过程需要一两分钟才能运行。所以你等了几分钟,然后被路由回到状态页面。

现在,我实际上并不关心在前端看到此存储过程的任何退出代码,因为您将在状态页面上看到它的状态。我想知道我是否有办法让这个过程失效,但没有前端关心回归。

我尝试在$location.path()调用服务器之前添加$http,但$http调用永远不会发生。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以将存储过程调用包装在promise中。浏览器将进行呼叫并继续,而不等待它完成,您可以在解决或拒绝功能中做出适当的反应。您可以使用angular的$ q服务:

insertRecord();
$q(function() {
    storedProcCall();
});
redirect();