js回调函数讲的比较好的书求推荐

DenggLin 2017-12-21 10:26:29
百度搜了一下,感觉网上讲的都不好,好多文章都是相互引用,求推荐讲的比较好的书或文章
...全文
358 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
文修 2017-12-22
  • 打赏
  • 举报
回复
只要把函数当作参数传给另外一个函数都叫做回调 因为js是单线程的,为了保证效率,因此一些操作必须用异步处理,比如读取一个文件,其他语言如C++,就是同步 而js一般是异步的如下

fs.readFile('file1.txt', 'utf8', function (err, data) {
      if (err) throw err;
      console.log('File 被读取' + data);
  });
nodejs基本上都是异步回调来处理业务 其实只要看几个后端代码或者自己写几个,就会对回调有比较深的理解了,不需要说学回调还需要专门看一本书
#麻辣小龙虾# 2017-12-22
  • 打赏
  • 举报
回复
https://book.douban.com/subject/24319975/


《你不知道的javascript》中卷

推介你看下。
漠子凉 2017-12-22
  • 打赏
  • 举报
回复
可以阅读《深入浅出node.js.》
functionsub 2017-12-21
  • 打赏
  • 举报
回复
引用 4 楼 qq_34117170 的回复:
[quote=引用 3 楼 functionsub 的回复:] 上面感觉已经挺详细的了。。 具体你什么不明白你可以找一点对应的代码,照着代码给你讲你应该会明白的快一点。
	function doSomething(callback) {
		callback('stuff', 'goes', 'here');
		console.log('a')
	} 
	function foo(a, b, c) {
		console.log(a + " " + b + " " + c);
	} 
	doSomething(foo); 
我的理解是不应该先打印出a,之后在打印出stuff', 'goes', 'here吗[/quote] 不哦,因为你callback是先执行的哦,在doSomething这个函数里,都是同步操作,所以是按顺序从上向下执行的。
function doSomething(callback) {
    setTimeout(function(){
        callback('stuff', 'goes', 'here');
    })
    console.log('a')
} 
function foo(a, b, c) {
    console.log(a + " " + b + " " + c);
} 
doSomething(foo);
加个setTimeout模拟异步操作,就是先打印a再打印其他的。
DenggLin 2017-12-21
  • 打赏
  • 举报
回复
引用 3 楼 functionsub 的回复:
上面感觉已经挺详细的了。。 具体你什么不明白你可以找一点对应的代码,照着代码给你讲你应该会明白的快一点。
	function doSomething(callback) {
		callback('stuff', 'goes', 'here');
		console.log('a')
	} 
	function foo(a, b, c) {
		console.log(a + " " + b + " " + c);
	} 
	doSomething(foo); 
我的理解是不应该先打印出a,之后在打印出stuff', 'goes', 'here吗
functionsub 2017-12-21
  • 打赏
  • 举报
回复
上面感觉已经挺详细的了。。 具体你什么不明白你可以找一点对应的代码,照着代码给你讲你应该会明白的快一点。
DenggLin 2017-12-21
  • 打赏
  • 举报
回复
引用 1 楼 functionsub 的回复:
这有啥好讲的? 不就是在其他函数中执行当前执行环境里的函数吗? 为什么要这样做呢? 因为异步操作,你没法保证什么时候操作完成,所以需要回调函数,才能保证异步操作完成之后立刻执行你要执行的代码。 同时因为你传入回调函数的时候,回调函数定义在当前执行环境,所以你传进去的回调函数能访问当前执行环境里的所有变量,以及传入该回调函数的参数。
详细讲讲呗
functionsub 2017-12-21
  • 打赏
  • 举报
回复
这有啥好讲的? 不就是在其他函数中执行当前执行环境里的函数吗? 为什么要这样做呢? 因为异步操作,你没法保证什么时候操作完成,所以需要回调函数,才能保证异步操作完成之后立刻执行你要执行的代码。 同时因为你传入回调函数的时候,回调函数定义在当前执行环境,所以你传进去的回调函数能访问当前执行环境里的所有变量,以及传入该回调函数的参数。

87,989

社区成员

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

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