您好!欢迎来到聚码网

聚码网

热门搜索: 相亲小程序    搭子源码    直播系统自有商城   
  • nodejs实现异步时遇到的一个问题
  • 聚码交流
  • 0 1
  • yhuxAvNbtxUM
    0000-00-00 00:00:00
  • 回帖
例如有a,b,c三个函数,分别都执行同步操作,为了简化我把同步操作简化了一下functionc(m){m=m+1;returnm;}functionb(m){m=m+1;returnc(m);}functiona(){letm=0;returnb(m);}执行a()输出的是2但是如果c函数执行的不是同步函数,是异步操作例如functionc(m){setTimeout(function(){m=m+1;},1000)returnm;}执行a()时,要想正确输出2,就得把c通过promise或者async进行封装,类似functionpromiseC(m){returnnewPromise((resolve,reject)=>{setTimeout(function(){m=m+1;resolve(m);},1000)}}asyncfunctionc(m){m=awaitpromiseC(m);returnm;}因为c变为异步函数,b要调用c,b也要改为异步的,如此类推a也得改为异步asyncfunctionb(m){m=m+1;returnawaitc(m);}asyncfunctiona(){letm=0;returnawaitb(m);}a().then(function(data){console.log(data)})这样才能输出2为了正确输出2,我把a,b都改变了,不知道有没有其他方法可以避免改变a,b又能达到正确输出呢?由于刚开始写代码时没有考虑到异步的情况,像a,b这些函数都是分布到不同文件里面,而且数量比较多,现在为了让c可以执行异步操作,改起来太难了,不知道大家有没有其他好的方法?下面是新添加的问题利用下面回答中直接返回promise对象的方法可以解决以上的问题,但是实际代码更多的结构是这样的functionc(m){m=m+1;returnm;}functionb(m){m=m+1;letn=c(m)n=n+1returnn;}functiona(){letm=0;letk=b(m);k=k+1;returnk;}如果按这个方法,我得改造a,b的return方法才能让a,b返回promise对象,对于这样的结构不知道还有没有不改动a,b函数实现正确输出的方法
最近热帖
近期热议
联系我们
Q Q:317563994
电话:400-000-000
邮箱:317563994@qq.com
时间:09:00 - 17:00