实习已经结束很久了,但是还有很多事情拖着没做,报告也还没有给老板,现在休息了一周开始慢慢做。这里主要总结一下实习过程中遇到的 Node.js 中异步的问题。
阮一峰的博客已经讲的特别清楚了,我这里就记录一下阅读阮一峰博客和自己使用的心得。阮一峰的博客
Promise 对象
Promise 对象有两个特点。首先,它代表一个异步操作,存在三种可能的状态,分别是进行中,已成功和失败。其次,promise 对象只有可能有两种状态改变,从进行中到成功或者从进行中到失败。Promise 构造函数接受一个函数作为参数,该函数的两个参数分别是 resolve 和 reject 。这两个参数都是内置的,我们不用部署。
异步表示当前线程不等到操作结束就继续执行后续代码,而线程的结果将用其他方式来通知发起这个线程的程序
常用的 Promise 函数
then
then 包含两个参数,都是函数。第一个是必须的,表示 resolve 的情况下,接下来进行的操作。第二个不是必须的,表示 reject 情况下,出现错误的处理方法。
finally
不论 promise 状态,最后都会执行的操作。本质上是 then 的一种特例。
all 和 race
all 将多个 promise 对象包装成一个 promise 对象。当被包装的对象中有一个 rejected 大的 promise 对象就会 rejected ,仅当全部小的 promise 对象都 resolved 的时候,大的对象才会 resolved 。
race 将多个 promise 对象包装成一个 promise 对象。但是它只返回它的 promise 对象中第一个改变状态的 promise 对象的状态。
resolve
该函数可以实例化一个非 promise 对象。直接返回一个状态变为 resolved 的新的 promise 对象。
Await 和 Async
async 函数返回的是一个 Promise 对象,而函数内部的 return 返回值可以被之后的 then 函数接收到。在 async 函数中,await 命令可以让程序暂时先返回,等待到异步程序处理完毕再接着处理后续的程序。任何一个 await 语句后面的 Promise 对象变为 rejected 状态,那么整个 async 函数都会中断执行。