JavaScript Promise-1| 青训营笔记

59 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第1天

1.回调函数

试设置异步执行函数:

[代码片段](https://code.juejin.cn/pen/7132732727350001667)

可以很显然地看出,这个函数一层接着一层地嵌套——可读性非常糟糕(“Callback Hell”)。那么,有没有什么办法可以解决这个问题呢?

2.Promise函数

Promise,意为“许诺,许愿”,会给出回复。已知Promise含三种状态:

pending:进行中 还未获得结果

resolved:进行完成 获得成功结果,可继续执行

rejected:进行完成 获得失败结果,拒绝继续执行

[代码片段](https://code.juejin.cn/pen/7132833312527089694)
由此可以看出变成了代码格式变成了链式的形式,下面将就代码对Promise对象进行解析:

new Promise(function (resolve, reject) { setTimeout(function () { console.log("First"); resolve(); }, 1000); })

新建一个Promise对象类的匿名函数,其中内部函数在延迟执行后通过resolve函数返回Promise对象自身。随后执行.then函数——then() 可以将参数中的函数添加到当前 Promise 的正常执行序列,从而以一种工整的形式确立异步执行顺序。 而resolve(a)可以放置参数a来向下一个then来返回一个Promise类成功对象(传入“thenable"对象)。 而reject() 参数中一般会传递一个异常给之后的 catch 函数用于处理异常。 不过需要注意到2点:

1.resolve 和 reject 的作用域只有起始函数,不包括 then 以及其他序列;

2.resolve 和 reject 并不能够使起始函数停止运行,别忘了 return。

总之,有了 Promise 对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。此外,Promise 对象提供统一的接口,使得控制异步操作更加容易。 还有更多内容有待更新和消化。待续。