我正在努力让我了解JavaScript中的承诺。根据我的理解,我可以把它们连在一起。但是,有些东西我觉得我很想念。目前,我有一个使用$localForage module的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(...)
中,我会被重定向。出于这个原因,我觉得有些事我对承诺不了解。
我是否正确地联系在一起?或者,我正在尝试一些我不能做的事情?如果我不能这样做,还有什么选择?
谢谢!
答案 0 :(得分:0)
是的,关键是要记住在promise链中添加一个错误处理程序。这可以通过将第二种方法回调添加到您建议的链末尾来实现,或者通过.catch(函数(错误){console.log(错误);})调用来结束您的链。
除非您明确捕获它们,否则承诺链中的错误往往会进入bitbucket。