承诺承诺太多的错误?
我在文档中写下这种风格的承诺:
Q.fcall(promisedStep1) .then(promisedStep2) .then(promisedStep3) .then(promisedStep4) .then(function (value4) { // Do something with value4 }) .catch(function (error) { // Handle any error from all above steps }) .done();
catch子句将会发现包括拼写错误在内的任何错误。 但是,根据nodejs dos:
由于JavaScript在JavaScript中的工作原理,几乎没有任何方法可以安全地“捡起你离开的地方”,而不会泄漏引用或创build其他某种不明确的状态。 应对抛出的错误的最安全的方法是closures该过程。
如果我们在callback风格中编写代码,而不是承诺风格,则会抛出一些types的错误
这真让我困惑。 在诺言书写时,我应该如何避免泄漏的引用。
谢谢〜
该示例显示了良好的承诺链,包括使用.done()
来确保任何未处理的exception从承诺链抛出到外部应用程序。 至于引用和error handling:承诺链只保证将错误将被转发到.catch
callback。 如果在抛出错误的时候没有办法清理状态,那么你运气不好。 例如
Q.fncall(function firstStep() { var fs = open file reference foo.bar; // generates ReferenceError }).then(function somethingElse() { ... }).catch(function (err) { // we have caught ReferenceError // but we cannot clean up open fs reference! }).done();
- Youtube API,NodeJS和Promise问题
- 如何使用jasmine-nodetesting函数,内部调用返回promise的函数?
- forEach Loop中的asynchronousfindOne()操作
- Mongodb节点驱动2.0。*与Bluebird 2.9。* promisification
- promisified mongoose / mongodb保存不成功的Ajax调用?
- 抛出Mongoose pre中间件的自定义错误,并使用蓝鸟承诺
- mongoose承诺不传递数据到下一个链
- node.js承诺:如何找出哪个迭代抛出.catch语句中的exception?
- 无法将值从服务返回到控制器以在node.js中进行呈现