美文网首页
NodeJs+Koa学习2、async与await

NodeJs+Koa学习2、async与await

作者: 那钱有着落吗 | 来源:发表于2022-03-08 17:53 被阅读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(上下文),从而在第一个中间件可以拿到下面中间件赋的值,而这个时候就很有必要使用这两个关键字来保证按照洋葱模型的执行;

相关文章

  • NodeJs+Koa学习2、async与await

    上面的这段代码,根据洋葱模型来说他的输出结果是:1,3,4,2; 而在第一个函数中获取到第二个函数的结果其实是一个...

  • JavaScript Async/Await

    笔记 What is Async/Await? Async/Await基于Promise, 并可以很好的与基于Pr...

  • async和await

    浅谈Async/Await用 async/await 来处理异步 async和await async:声明一个异步...

  • Koa-------学习(2)async/await

    async与await一般都是同时出现.async是异步的简写,而await可以堪称async wait的简写 a...

  • promise 与 async await 异步之美

    一眼看懂promise与async await async和await在干什么,async用于申明一个functi...

  • flutter-async和await原理解析

    一 . async await 与 Future 在异步调用中有三个关键词,async、await、Futur...

  • ES8(一) —— async&await

    目录 async和普通函数的区别 await async/await处理多回调异步 async和await必须配合...

  • async

    async/await特点 async/await更加语义化,async是“异步”的简写,async functi...

  • promise async await

    1.async await 2.promise

  • ES6中的好东西

    1 Await/Async 前端的回调时代我没有赶上,我赶上的是await/async时代。await和async...

网友评论

      本文标题:NodeJs+Koa学习2、async与await

      本文链接:https://www.haomeiwen.com/subject/clearrtx.html