[英]Chaining Promises Together in JavaScript
我正在努力实现JavaScript的承诺。 根据我的理解,我可以将它们链接在一起。 但是,我感到有些失踪。 目前,我有一个使用$ localForage模块的AngularJS应用程序。 我需要在本地存储中设置一个项目。 然后,我需要从本地存储中删除一个项目。 最后,我需要将用户重定向到另一个页面。 为了实现此目的,我编写了以下代码:
$localForage.setItem('name', 'John Doe')
.then(function() { return $localForage.removeItem('history'); })
.then(function() {
console.log('redirecting the user...');
$location.url('/views/page-2');
console.log('should redirect');
})
;
执行此代码后,我将在控制台中看到以下内容:
redirecting the user...
should redirect
但是,我从未重定向到/views/page-2
。 有趣的是,如果我放置$location.url('/views/page-2');
在第一个then(...)
,我被重定向。 出于这个原因,我觉得我对诺言有些不了解。
我是否正确链接在一起? 或者,我在尝试做我做不到的事情吗? 如果我做不到,那有什么选择呢?
谢谢!
是的,要做的关键是记住在Promise链中添加一个错误处理程序。 这可以通过按照Chris的建议在链的末尾添加第二种方法回调,或以.catch(function(err){console.log(err);})调用结束链来实现。
除非您明确捕获它们,否则Promise链中的错误往往会进入位桶。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.