Promise是异步编程的一种解决方案:从语法上讲,promise是一个对象,从它可以获取异步 操作的消息;从本意上讲,它是承诺,承诺它过一段时间会给你一个结果。promise有三种状 态:pending(等待态),fulfiled(成功态)rejected(失败态);状态一旦改变,就不会再变。 创造promise实例后,它会立即执行。
fs. readFile(‘somefile. txt’, function (e, data) {
if (e) {
console. log(e);
}
console.log(data);
});
如果我们在回调内部有另一个异步操作,则此方法存在问题。我们将有一个混乱且不可读的代 码。此代码称为『回调地狱』。
//回调地狱
fs. readFile(‘somefile. txt’, function (e, data) {
//your code here
fs. readdir(‘directory’, function (e, files) {
//your code here
fs. mkdir(‘directory’, function (e) {
//your code here
})
})
))
如果我们在这段代码中使用promise,它将更易于阅读、理解和维护。
promReadFile(‘file/path’) . then(data => { return
promReaddir(‘directory’); }) . then(data => { return
promMkdir(‘directory’); }).catch(e => { console. log(e); })
promise有三种不同的状态:
1、 pending:初始状态,完成或失败状态的前一个状态
2、 fulfilled:操作成功完成
3、 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) => {…});
Was this helpful?
0 / 0