回调嵌套的两种写法,有什么区别?

bsnry 2017-12-14 11:57:16
写法一:

arp.getMAC('192.168.1.101', function(err, mac) {
console.log('mac address: '+mac);
arp.getMAC('192.168.1.114', function(err, mac) {
console.log('mac address: '+mac);
});
});


写法二:

arp.getMAC('192.168.1.101', function(err, mac) {
console.log('mac address: '+mac);
});

arp.getMAC('192.168.1.114', function(err, mac) {
console.log('mac address: '+mac);
});


写法一和写法二有什么区别?

哪一种更好?
...全文
207 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hello World, 2017-12-14
  • 打赏
  • 举报
回复
第一种是第一个执行完成再执行第二个,能保证最终完成的顺序,第二种看你是否有异步,没有就话就是一样的
Hello World, 2017-12-14
  • 打赏
  • 举报
回复
如果arp.getMAC不是异步函数则两个方法是一样的,如果是异步函数,则两个请求先后发起,多数情况下也是按顺序完成。 但参数不同可能计算也不同、有可能缓存、甚至服务器是集群的、分布式的,就不能保证哪个先完成了
bsnry 2017-12-14
  • 打赏
  • 举报
回复
引用 1 楼 apollokk 的回复:
第一种是第一个执行完成再执行第二个,能保证最终完成的顺序,第二种看你是否有异步,没有就话就是一样的
没有,是指什么? 是指arp.getMAC('192.168.1.101', function(err, mac) { console.log('mac address: '+mac); });吗? arp.getMAC 这个是 "node-arp" 库, 1. 我不知道该库提供的getMAC是否是异步函数 2; ,如果不是异步函数,按照你的意思,是否可以理解为: 第二种写法和第一种写法一样,顺序执行。 如果getMAC是异步函数,那么是否意味着 这2个函数的顺序无法确定。 以上想法,请斧正。谢谢。

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧