本文小编为大家详细介绍“node.js异步编程的callback有什么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“node.js异步编程的callback有什么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧
本文小编为大家详细介绍“node.js异步编程的callback有什么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“node.js异步编程的callback有什么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
function interview(callback) { setTimeout(() => { callback("success"); }, 1000);}interview(function (res) { if (res === "success") { console.log("============我笑了"); }});
error-first callbak
Node-style callback
第一个参数是 error,后面的参数才是结果
function interview(callback) { setTimeout(() => { if (Math.random() < 0.3) { callback("success"); } throw new Error("fail"); }, 1000);}try { interview(function (res) { if (res === "success") { console.log("============我笑了"); } });} catch (error) { console.log("fail", error);}
上面的代码中,try catch
并不能捕获 throw new Error('fail')
抛出的错误!,而是抛出到了 JS 全局! 在 Node.js 中,全局错误时非常严重的事情,会造成程序的崩溃!
为什么没 try catch
无法捕获 setTimeout 里面的 throw
呢? 这就跟调用栈 和 事件循环有关系了!
每一个事件循环都是一个全新的调用栈! setTimeout
与 interview 是两个不同的事件循环!
但是可以通过在回调函数中的参数抛出错误的方式来解决这个问题
function interview(callback) { setTimeout(() => { if (Math.random() < 0.3) { callback(null, "success"); } else { callback(new Error("fail")); } }, 1000);}interview(function (error) { if (error) { return console.log("============我哭了"); } console.log("============我笑了");});
上面的代码中,可以根据参数的类型来判断是否出错! 但是 Node.js 中有很对回调函数, 我们不可能在每一个函数中都去判断参数类型是是否出错!
Node.js 规定第一个参数就是 erro,第二个参数就是结果!如果第一个参数不为空,则说明异步调用出错了!
多个异步任务串行的情况, 下面我们模拟一下 N 轮面试,
function interview(callback) { setTimeout(() => { if (Math.random() < 0.6) { callback(null, "success"); } else { callback(new Error("fail")); } }, 1000);}interview(function (error) { if (error) { return console.log("======第一轮面试======我哭了"); } interview(function (error) { if (error) { return console.log("====第二轮面试========我哭了"); } interview(function (error) { if (error) { return console.log("====第三轮面试========我哭了"); } console.log("三轮面试都成功了!啊哈哈哈!"); }); });});
可以看到上面的异步流程做了三层嵌套,这还只是代码就比较简单的情况! 那么在实际应用中,每一个嵌套函数都可能非常复杂
多个个异步任务并发的情况
function interviewCompay() { let count = 0; interview(function (error) { if (error) { return console.log("====第一家公司面试========我哭了"); } count++; }); interview(function (error) { if (error) { return console.log("====第二家公司面试========我哭了"); } count++; if (count === 2) { return console.log("两家公司面试都成功了!我笑了"); } });}interviewCompay();
在每一个异步任务里面都需要加入同一个变量才能捕获 多个异步任务的结果
读到这里,这篇“Node.js异步编程的callback有什么用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网精选频道。
--结束END--
本文标题: Node.js异步编程的callback有什么用
本文链接: https://www.lsjlt.com/news/346573.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
一口价域名售卖能注册吗?域名是网站的标识,简短且易于记忆,为在线用户提供了访问我们网站的简单路径。一口价是在域名交易中一种常见的模式,而这种通常是针对已经被注册的域名转售给其他人的一种方式。
一口价域名买卖的过程通常包括以下几个步骤:
1.寻找:买家需要在域名售卖平台上找到心仪的一口价域名。平台通常会为每个可售的域名提供详细的描述,包括价格、年龄、流
443px" 443px) https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294.jpg https://www.west.cn/docs/wp-content/uploads/2024/04/SEO图片294-768x413.jpg 域名售卖 域名一口价售卖 游戏音频 赋值/切片 框架优势 评估指南 项目规模
0