繁体   English   中英

用JavaScript链接在一起的承诺

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM