同步&异步:
同步:顺序执行,执行时其余操作皆不可用;
异步:分块执行,现在与将来
实现原理:js宿主环境(不单指web浏览器)的事件循环机制会使用消息队列对事件进行调度,js引擎只是按需执行代码
(ES6中新增了promise,为js真正实现了自身的事件循环管理)
单线程&多线程(异步与并行):
并行:多个线程可以共享一个进程的内存,跨线程共享数据;同时运行的程序会出现数据交错,结果不可控,取决于语句顺序级别
异步:事件循环将任务进行分块,不允许对共享内存的访问和修改;因单线程的代码具有完整运行特性,程序输出仅取决于函数顺序级别