2019-01-06
回答
Promise
对象用于表示一个异步操作的最终状态(完成或失败)及其返回值。他有以下几种状态:
- pending:初始状态,完成或失败状态的前一个状态
- fulfilled:操作成功完成
- rejected:操作失败
pending 状态的 Promise 对象会触发 fulfilled/rejected 状态,在其状态处理方法中可以传入参数/失败信息。当操作成功完成时,Promise 对象的 then
方法就会被调用;否则就会触发 catch
。如:
const myFirstPromise = new Promise((resolve, reject) => {
setTimeout(function(){
resolve("成功!");
}, 250);
});
myFirstPromise.then((data) => {
console.log("Yay! " + data);
}).catch((e) => {...});
加分回答
异步编程还包含了以下几种
- 回调函数,如:
$('body).click(() => {
alert(`clicked on body`);
});
- generator,如:
function * gen (x) {
const y = yield x + 2;
}
const g = gen(1);
console.log('first', g.next()); // { value: 3, done: false }
console.log('second', g.next()); // { value: undefined, done: true }
- Async/Await
async function readJsonFile() {
try {
const file = await readFile('../generator/config.json');
console.log(file.toString());
} catch (e) {
console.log('出错啦');
}
}