async/await
这两个必须一起使用,且async只能用于方法前面,返回的是一个promise对象(promise对象请看后面)。而await只能用于async方法里面,能够保证await里面的内容执行完了才执行后面的代码,即保证同步执行。
- await关键字不会捕获方法里的异常以及promise里的reject(),它只会一直等待。因此,为了防止一直等待,程序没有反应,需要在async作用的方法后面用catch捕获异常。
promise
promise对象里的内容无需订阅,创建后即可立即执行。对于其内的resolve()和reject方法互斥,执行其中一个,则另一个不能执行,且只能执行一次。
observable
observable相比较于promise其内的方法并不能立即执行,需要订阅后(调用subscribe()方法)才可以执行,并且可以执行多次。
const fs = require("fs");
const read = function(fileName){
return new Promise((resolve,reject)=>{
fs.readFile(fileName,(err,data)=>{
if (err) {
reject(err);
} else{
resolve(data);
}
});
});
};
async function readByAsync(){
let a1;
let a2;
let a3;
try{
a1 = await read('1.txt');
a2 = await read('2.txt');
a3 = await read('3.txt');
}catch(e){
//TODO handle the exception
}
console.log(a1);
console.log(a2);
console.log(a3);
}
readByAsync();