美文网首页web前端开发
捕获setTimeout错误

捕获setTimeout错误

作者: liuzhide | 来源:发表于2020-03-27 10:48 被阅读0次

在旧式回调 API 中创建 Promise

可以通过 Promise 的构造器从零开始创建 Promise。 这种方式(通过构造器的方式)应当只在包裹旧 API 的时候用到。

理想状态下,所有的异步函数都已经返回 Promise 了。但有一些 API 仍然使用旧方式来传入的成功(或者失败)的回调。典型的例子就是 setTimeout() 函数:

setTimeout(() => saySomething("10 seconds passed"), 10000);

混用旧式回调和 Promise 可能会造成运行时序问题。如果 saySomething 函数失败了,或者包含了编程错误,那就没有办法捕获它了。这得怪 setTimeout

幸运地是,我们可以用 Promise 来包裹它。最好的做法是,将这些有问题的函数包装起来,留在底层,并且永远不要再直接调用它们:

const wait = ms => new Promise(resolve => setTimeout(resolve, ms));

wait(10000).then(() => saySomething("10 seconds")).catch(failureCallback);

通常,Promise 的构造器接收一个执行函数(executor),我们可以在这个执行函数里手动地 resolve 和 reject 一个 Promise。既然 setTimeout 并不会真的执行失败,那么我们可以在这种情况下忽略 reject。

相关文章

  • 捕获setTimeout错误

    在旧式回调 API 中创建 Promise 可以通过 Promise 的构造器从零开始创建 Promise。 这种...

  • setTimeout错误能在Promise中捕获吗?

    new Promise(function(resolve,reject) { setTimeout(() => ...

  • Python面向对象2

    异常 捕获异常image.png根据错误类型捕获异常image.png 未知错误捕获image.png 捕获异常完...

  • Python的错误处理try...except...finall

    捕获错误 错误有很多类型,可以有多个except捕获错误: Python的错误其实也是class,所有的错误类型都...

  • 关于错误

    错误分类 及时运行错误:代码错误 资源加载错误 错误的捕获方式 运行时错误的捕获1、try..catch 2、wi...

  • 错误监控

    前端错误的分类 即时运行错误(代码错误) 资源加载错误 错误的调试方式 错误的捕获方式 即时运行错误的捕获方式 t...

  • 第十七章 错误处理与调试

    1.处理JavaScript错误的方法: ①捕获错误:try-catch语句 ②抛出错误:throw操作符 捕获错...

  • JavaScript错误与调试

    1 错误处理 js使用try...catch语句来捕获并处理错误,使用throw语句来主动抛出一个错误。 捕获错误...

  • JavaScript 坑与技巧:异常

    异常 异步错误处理 用try包裹setTimeout()是无效的:原因就在于调用setTimeout()函数时,传...

  • js setTimeout 中传递参数

    记录一下使用setTimeout犯的错误 正确用法

网友评论

    本文标题:捕获setTimeout错误

    本文链接:https://www.haomeiwen.com/subject/batluhtx.html