Promise
Promise 是一种异步编程的解决方案,其本质是对回调函数的改进。Promise 可以解决回调函数嵌套过深的问题,使得异步代码更加清晰明了。Promise 的状态分为三种:pending(进行中)、fulfilled(已成功)和 rejected(已失败)。
Promise 的基本用法
-- -------------------- ---- ------- ----- ------- - --- ----------------- ------- -- - -- ---- -- -------- - -------------- -- ----- ------- -- - ---- - ------------- -- ----- ------ -- - -- -------------------- -- - -- ------------ ---------------- -- - -- ------------ --
Promise.all 和 Promise.race
Promise.all 和 Promise.race 是 Promise 的两个常用方法。Promise.all 接收一个 Promise 数组作为参数,当这些 Promise 都执行成功时,返回一个包含所有 Promise 返回值的数组;当其中任意一个 Promise 执行失败时,返回失败的 Promise。
Promise.all([promise1, promise2, promise3]) .then(([result1, result2, result3]) => { // 所有 Promise 都成功时执行的代码 }) .catch((error) => { // 任意一个 Promise 失败时执行的代码 })
Promise.race 接收一个 Promise 数组作为参数,当其中任意一个 Promise 执行成功时,返回成功的 Promise;当其中任意一个 Promise 执行失败时,返回失败的 Promise。
Promise.race([promise1, promise2, promise3]) .then((result) => { // 任意一个 Promise 成功时执行的代码 }) .catch((error) => { // 任意一个 Promise 失败时执行的代码 })
Generator 函数
Generator 函数是 ES6 中新增的一种特殊函数,可以控制函数的执行。Generator 函数通过 yield 关键字可以暂停函数的执行,并在需要时恢复执行。Generator 函数返回一个迭代器对象,通过迭代器的 next 方法可以控制函数的执行。
Generator 函数的基本用法
-- -------------------- ---- ------- --------- ------------------- - ----- - ----- - ----- - - ----- --------- - ------------------- ----------------------------- -- - ------ -- ----- ----- - ----------------------------- -- - ------ -- ----- ----- - ----------------------------- -- - ------ -- ----- ----- - ----------------------------- -- - ------ ---------- ----- ---- -
Generator 函数的应用
Generator 函数可以用于异步编程,将异步操作封装为一个 Promise,然后通过 yield 关键字暂停函数的执行,等待 Promise 的结果返回后再恢复执行。
-- -------------------- ---- ------- --------- ------------------- - ----- ------ - ----- --- ----------------- ------- -- - -- ---- -- -------- - -------------- - ---- - ------------- - -- ------------------- - ----- --------- - ------------------- ----- ------- - ---------------------- --------------------- -- - ---------------------- ---------------- -- - ---------------------- --
Promise 和 Generator 函数的结合应用
Promise 和 Generator 函数可以结合使用,将异步操作封装为一个 Promise,然后通过 yield 关键字暂停函数的执行,等待 Promise 的结果返回后再恢复执行。
-- -------------------- ---- ------- --------- ------------------- - --- - ----- ------- - ----- -------- -------------------- ----- ------- - ----- -------- -------------------- - ----- ------- - -------------------- - - ----- --------- - ------------------- -------- ------------------ ----------- - ----- ------ - -------------------------- -- ------------- - ------ ------------ - ------------------------- -- - ------------------ ------ ---------------- -- - ---------------------- -- - ------------------
总结
Promise 和 Generator 函数是异步编程的两种解决方案,它们可以单独使用,也可以结合使用。使用 Promise 和 Generator 函数可以使异步代码更加清晰明了,提高代码的可读性和可维护性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/658f70d5eb4cecbf2d511c2c