模块加载机制
- 1.模块名有路径,并且有后缀
通过路径,引入相关的模块。 - 2.当模块有路径,但是没有后缀的时候
2.1 会先找路径下同名的js文件。
2.2 再找路径下同名的文件夹,找文件夹下的index.js
2.3 如果文件夹下有package.json 会找文件中的main字段 入口文件。
2.4 如果找不到,就报错。 - 3.模块没有路径也没有后缀。
3.1 node会判断它是否为内置模块,是内置就加载
3.2 不为内置,则去第三方模块中查找,去node_modules中查找。
PROMISE
在js中,异步任务(API)会在所有的同步任务完成后才会执行。
function back(){
setTimeout(function(){
console.log("hello word");
},1000)
}
console.log(back());
执行代码:
执行步骤
log是一个同步代码,setTimeout是异步代码
执行back函数时,遇到setTimeout时,setTimeout不会立即执行, back就没有返回值,默认返回undefined。所以,打印的结果是undefined,打印完成后,js中的所有同步代码都执行完了,才会执行setTimeout函数。
- 例子:
- 小明
- 小红
- 去查自己的账户余额
- 小明如果查到金额小于100,则充值200元.
- 小红如果查到金额小于10000,则充值20000元。
- 查询余额方法时一个异步的,需要一定的时候才能返回结果。
function getBalance(callbank){
setTimeout(function(){
let balance = 200;
callbank(balance);
},1000)
}
// 小明去调用
getBalance(function(balance){
if (balance<200) {
console.log("小明充了200元");
}else{
console.log("小明什么也不干");
}
})
// 小红去调用
getBalance(function(balance){
if (balance<10000) {
console.log("小红充2万!");
}else{
console.log("小红什么也不干");
}
})
执行代码: