Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngulaJS UI路由器重试承诺_Javascript_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript AngulaJS UI路由器重试承诺

Javascript AngulaJS UI路由器重试承诺,javascript,angularjs,angular-ui-router,Javascript,Angularjs,Angular Ui Router,我在我的angular项目中使用ui路由器。我的问题是:在解析中重试并正确处理承诺的最佳实践是什么 现在我正在模拟断开连接或超时,当这种情况发生时,承诺被拒绝(使用404),这使我的应用程序处于不一致的状态。我找不到最好的方法在服务器备份时重试到该状态,现在什么都没有发生,因为承诺已被拒绝 从ui路由器维基,我不确定我是否在那里找不到我的答案,这是最接近的事情,我猜Ed忘记了: 更新(4/30下午3:02): 创建时,我意识到问题在于我正在使用服务返回承诺对象,这就是为什么承诺仍然被拒绝的原因

我在我的angular项目中使用ui路由器。我的问题是:在解析中重试并正确处理承诺的最佳实践是什么

现在我正在模拟断开连接或超时,当这种情况发生时,承诺被拒绝(使用404),这使我的应用程序处于不一致的状态。我找不到最好的方法在服务器备份时重试到该状态,现在什么都没有发生,因为承诺已被拒绝

从ui路由器维基,我不确定我是否在那里找不到我的答案,这是最接近的事情,我猜Ed忘记了:


更新(4/30下午3:02): 创建时,我意识到问题在于我正在使用服务返回承诺对象,这就是为什么承诺仍然被拒绝的原因。

更新(5/01 11:30AM)

解决方案


在昨晚玩了plunkr之后,我意识到我需要检查承诺的状态,所以我发现这不太有用。顺便说一句,我使用的是一个服务,因为我只需要解决这个承诺一次,就是从服务器端检索一个在会话的其余部分不会更改的目录。因此,如果您好奇,我的解决方案将涉及某种承诺工厂(http GET),因此如果服务承诺没有得到解决,我可以创建一个新的承诺并进入正确的状态。

好吧,直接的答案是,您没有。承诺只会被解决或拒绝一次,失败的解决会导致转换失败。如果要恢复转换本身,请截取
$stateChangeError
(或使用转换的错误回调),检查承诺拒绝,并尝试恢复和重新启动转换。您可能需要添加一些故障保护代码,以确保不会重复执行此操作。

您可以在问题中发布一些简要的代码吗?