(撰写中)JavaScript海底两万里:异步

争取一文帮自己搞清楚JavaScript中的异步API。


JavaScript主机环境提供了许多函数,这些函数允许我们执行异步行为,意思是现在开始执行的行为会在一段时间后完成,比如setTimeout函数。

JavaScript最初是为Web浏览器平台而创建的,后来逐渐演变为一种具有多种用途和平台的语言,JavaScript将平台称为主机环境

主机环境提供了自己的对象和语言核心以外的函数,比如浏览器提供了控制网页的方法,Node.js提供了服务器端功能等。

异步编程允许我们咋i执行一个长时间任务时,程序不需要进行等待,而是继续执行之后的代码,直到这些任务完成后再回来通知你。异步编程通常是以回调函数的形式来实现,这种模式能够避免程序的阻塞。

回调,简单来说就是把函数作为函数的参数;

回调函数,简单来说就是以函数作为参数的函数。

在Java中,我们知道方法接收的函数都是类对象,而即便是Java8开始有了lambda表达式,而Java的函数式编程是基于函数式接口,所以从某种程度上来说它的实现仍然没有脱离类与对象。而在JavaScript中,作为一门多范式的语言,它支持纯粹的函数式编程,我们可以将函数作为参数传递给另一个函数:

1
2
3
4
5
6
7
8
9
function argfun() {
console.log('function called as callback');
}

function functional(fun) {
fun();
}

functional(argfun); // function called as callback

可以看到functional接受一个函数fun作为参数,在functional内部执行fun函数,从而输出结果。


(撰写中)JavaScript海底两万里:异步
https://skycurtain.github.io/2022/09/09/javascript-drowning-in-asynchronous/
作者
Skycurtain
发布于
2022年9月9日
许可协议