20210302-nodejs
nodejs
js的运行环境,基于v8引擎,非阻塞IO,事件驱动,单进程单线程
优:IO密集型场景(磁盘、网络、数据库)
劣:CPU密集型(图像处理)
语义版本控制
通常子线程异步执行任务后,无法与主线程同步,JavaScript 中的异步操作函数往往通过回调函数来实现异步任务的结果处理。
*异步函数*
async function asyncFunc() {
await print(1000, "First");
await print(4000, "Second");
await print(3000, "Third");
}
asyncFunc();
function print(delay, message) {
return new Promise(function (resolve, reject) {
setTimeout(function () {
console.log(message);
resolve();
}, delay);
});
}
await后必须接Promise,调用者会等待Promise执行结束后再往下执行。
await/async更易于调试
3号
process.nextTick(() => {
//做些事情
})
在下一个滴答开始之前执行
setTimeout(()=>{},0) 在下一个滴答结束之后执行
setImmediate(() => {
//运行一些东西
})
类似于setTimeOut也是下一个迭代中执行
js单进程单线程
使用回调来
async函数总会返回Promise,即使他并没有显示返回,如
const aFunction = async () => {
return '测试'
}
aFunction().then(alert) // 这会 alert '测试'