首页 > 编程知识 正文

javascript同步方法实现,js同步变异步

时间:2023-05-05 21:51:15 阅读:184858 作者:2497

    在javascript中,比如我们在请求数据的时候,举个例子,查询所有的文章列表, 接着拿到文章列表再去查询文章详情.这是两个请求,但是查询文章详情必然要拿到该文章的id,也就是查询文章详情的接口,需要在查询文章列表后来执行,否则就会拿不到文章的id.那如何保证先查询文章列表,再查文章详情呢????

     这就是异步操作的同步化, 以下是解决方案:

            若查询文章列表的函数是findAll()

            查询文章详情的函数是findById()

     1. 回调函数嵌套         findAll().then((res)=>{ findById() })

          这种方式如果是简单的业务逻辑可以这样使用,但是若是逻辑复杂就需要多层回调,也就是所谓的回调噩梦,所以不是特别可取


      2.Promise...then方式
         promise的流程如下图所示:

Promise一旦新建就立刻执行, 此时的状态是Pending(进行中),它接受两个参数分别是resolve和reject.它们是两个函数.
resolve函数的作用是将Promise对象的状态从'未完成'变为'成功'(由Pending变为Resolved), 在异步操作成功时,将操作结果作为参数传递出去;
reject函数的作用是将Promise对象的状态从'未完成'变为失败(由Pending变为Rejected),在异步操作失败时调用,并将异步操作的错误作为参数传递出去.

<script type="text/javascript">function foo(){ return new Promise((reslove,reject)=>{ findAll().then(()=>{ reslove(); }).catch(()=>{ reject(); }) })}foo.then((reslove)=>{findById()})</script>  3.generator函数  /  async函数

   具体用法,见上一篇

链接https://blog.csdn.net/rolinabc/article/details/103902759

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。