jscallback
发布时间:2025-05-21 02:51:59 发布人:远客网络
一、jscallback
js中callback是什么呢?不知道的小伙伴来看看小编今天的分享吧!
一个被当做参数的函数,即为回调函数。
在JS中万物皆为对象。函数本身也是一个对象,既然是对象,所以函数当然可以当做函数的参数。
如上述代码,fun函数就是一个对象。
上述代码中,fun2做为fun1的参数,fun2即为回调函数。
几乎所有的第三方函数我们都无法修改函数的内部实现,比如数组的forEach,map等。那么我们也就无法在这样的函数体中,调用自己所写的功能模块。所以此时,回调函数就提供了这样的能力,使我们可以将自己所书写的函数传入第三方函数中,从而实现完整的功能。
通过冒泡排序,来展示回调函数的使用方式。
函数bubbleSort拥有一个参数callBack,而smallToLarge与LargeTosmall均为回调函数,当我们在bubbleSort函数调用时,传入smallToLarge与LargeTosmall就可以非常方便的控制排序的规则。
以上就是小编今天的分享了,希望可以帮助到大家。
二、node.js 有哪些全局对象
1、global最根本的作用是作为全局变量的宿主。按照ECMAScript的定义,满足以下条件的变量是全局变量:
2、隐式定义的变量(未定义直接赋值的变量)。
3、当你定义一个全局变量时,这个变量同时也会成为全局对象的属性,反之亦然。需要注意的是,在Node.js中你不可能在最外层定义变量,因为所有用户代码都是属于当前模块的,而模块本身不是最外层上下文。
4、注意:永远使用var定义变量以避免引入全局变量,因为全局变量会污染命名空间,提高代码的耦合风险。
5、process是一个全局变量,即 global对象的属性。
6、它用于描述当前Node.js进程状态的对象,提供了一个与操作系统的简单接口。通常在你写本地命令行程序的时候,少不了要和它打交道。下面将会介绍process对象的一些最常用的成员方法。
7、process.argv是命令行参数数组,第一个元素是 node,第二个元素是脚本文件名,从第三个元素开始每个元素是一个运行参数。
8、将以上代码存储为argv.js,通过以下命令运行:
9、$ node argv.js 1991 name=byvoid--v"Carbo Kuo"
10、'/home/byvoid/argv.js',
11、process.stdout是标准输出流,通常我们使用的 console.log()向标准输出打印字符,而 process.stdout.write()函数提供了更底层的接口。
12、process.stdin是标准输入流,初始时它是被暂停的,要想从标准输入读取数据,你必须恢复流,并手动编写流的事件响应函数。
13、process.stdin.on('data', function(data){
14、process.stdout.write('read from console:'+ data.toString());
15、process.nextTick(callback)的功能是为事件循环设置一项任务,Node.js会在下次事件循环调响应时调用 callback。
16、初学者很可能不理解这个函数的作用,有什么任务不能在当下执行完,需要交给下次事件循环响应来做呢?
17、我们讨论过,Node.js适合I/O密集型的应用,而不是计算密集型的应用,因为一个Node.js进程只有一个线程,因此在任何时刻都只有一个事件在执行。
18、如果这个事件占用大量的CPU时间,执行事件循环中的下一个事件就需要等待很久,因此Node.js的一个编程原则就是尽量缩短每个事件的执行时间。process.nextTick()提供了一个这样的工具,可以把复杂的工作拆散,变成一个个较小的事件。
19、functiondoSomething(args, callback){
20、我们假设compute()和somethingComplicated()是两个较为耗时的函数,以上的程序在调用
21、doSomething()时会先执行somethingComplicated(),然后立即调用回调函数,在 onEnd()中又会执行
22、compute()。下面用process.nextTick()改写上面的程序:
23、functiondoSomething(args, callback){
24、改写后的程序会把上面耗时的操作拆分为两个事件,减少每个事件的执行时间,提高事件响应速度。
25、注意:不要使用setTimeout(fn,0)代替process.nextTick(callback),前者比后者效率要低得多。
26、我们探讨了process对象常用的几个成员,除此之外process还展示了process.platform、 process.pid、process.execPath、process.memoryUsage()等方法,以及POSIX进程信号响应机制。
27、console用于提供控制台标准输出,它是由Internet Explorer的JScript引擎提供的调试工具,后来逐渐成为浏览器的事实标准。
28、Node.js沿用了这个标准,提供与习惯行为一致的 console对象,用于向标准输出流(stdout)或标准错误流(stderr)输出字符。 console.log():向标准输出流打印字符并以换行符结束。
29、console.log接受若干个参数,如果只有一个参数,则输出这个参数的字符串形式。如果有多个参数,则以类似于C语言 printf()命令的格式输出。
30、第一个参数是一个字符串,如果没有参数,只打印一个换行。
31、console.log('Hello world');
32、console.log('byvoid%diovyb');
33、console.log('byvoid%diovyb', 1991);
34、console.error():与console.log()用法相同,只是向标准错误流输出。
35、console.trace():向标准错误流输出当前的调用栈。
36、at Object.<anonymous>(/home/byvoid/consoletrace.js:1:71)
37、at Module._compile(module.js:441:26)
38、at Object..js(module.js:459:10)
39、at Module.load(module.js:348:31)
40、at Function._load(module.js:308:12)
41、at EventEmitter._tickCallback(node.js:192:40)
三、小程序不同页面的异步回调,callback和promise的使用讲解
1、针对小程序中页面间异步数据处理的问题,本文将介绍两种常用的解决方案:callback和promise。首先,我们来探讨回调的用法。当你在app.js中发起请求,获取数据后,通常的做法是定义一个回调函数作为参数,这个函数会在数据获取成功或失败时被调用,从而传递回数据。这就像在两个页面之间建立一个“监听者”机制,当一个页面获取到数据后,会立即通知另一个页面。然而,如果觉得这种方法过于复杂,可以考虑使用promise来简化流程。
2、promise的优势在于它能直接将数据处理和使用关联起来,无需复杂的回调嵌套。在app.js中,可以定义一个返回promise的方法,而在index.js中,只需简单调用这个方法即可。这样,数据的请求和使用仿佛在同一页面完成,实现起来更为直观和整洁。下面,让我们通过实例代码来详细了解这两种方法的实现过程。
3、在app.js中,代码可能会像这样定义promise方法:
4、而在index.js中,调用方式如下:
5、希望通过这篇文章,帮助大家理解如何在小程序的不同页面间有效地处理异步回调,无论是通过callback还是promise,都能让数据的获取和使用变得更加顺畅。完整的代码示例可供参考,方便你在实际开发中运用。