NodeJs+Koa学习2、async与await

2022-03-08  本文已影响0人  那钱有着落吗

上面的这段代码,根据洋葱模型来说他的输出结果是:1,3,4,2;

而在第一个函数中获取到第二个函数的结果其实是一个promise函数,如果不了解promise函数的朋友可以去研究了解下。 这个时候如果打印,就可以看到下面会打印出一个promise。

而如果想要获取到这个promise函数结果可以如下这么写:

a.then((res)=>{
    console.log(res);
})

那如果我不想这么复杂,我就想要获取到promise的结果,就得加上 async和await搭配起来使用了,而他两个配合起来可以保证洋葱模型的正常运行。


1.await

1.1阻塞线程

await会阻塞线程,等待异步调用结果的返回,会把难以处理的异步线程变成同步的调用。

1.2拿到表达式或者函数的结果

例如await 1999*1999 他是会取到这个计算结果的,或者说await一个promise,那么就会取到promise的调用结果。

1.3 在使用await的时候必须和async搭配使用

2. async

主要一个函数加上了async,那么不论这个函数的返回值是什么,都会被包装成一个promise。

3.为什么要保证洋葱模型

这就是比较典型的例子,在第二个函数里面我们使用两个关键词,最终的执行顺序是1324,因为在第二个函数中,有一个await线程阻塞了,然后线程就继续执行第一个函数的下面,然后最终线程不阻塞了,就打印出4了。 所以我们需要在函数前面加上async ,如果有next就在next()前加上await 这样来保证洋葱模型的的执行。

我们有时候需要将某一个中间件赋值给ctx(上下文),从而在第一个中间件可以拿到下面中间件赋的值,而这个时候就很有必要使用这两个关键字来保证按照洋葱模型的执行;

上一篇下一篇

猜你喜欢

热点阅读