hezi100_2017 2021-08-09 02:20 采纳率: 92.3%
浏览 72
已结题

js中无法实现函数f1()运行完成后再运行f2()

我想实现函数f1()运行完成后,再运行f2(),因为小程序有时不是顺序执行的,所以我参照网上的用下面方法,可是 却还是不能实现,请问应该如何修改代码才能实现等f1()执行完后再执行f2()呢,请教各位!
async f2(){
try{
await f1()
}
catch(e){

 }

}

  • 写回答

5条回答 默认 最新

  • CSDN专家-showbo 2021-08-09 02:34
    关注

    不是小程序不按照顺序,是应为你的f1使用了异步执行的方法,如setTime,setInterval或者wx.request之类,这样是不会等待异步执行完毕后再执行f2,按照顺序执行,用下面2种方法中其中一种来解决
    可以用Promise,代码如下,有帮助麻烦点个采纳【本回答右上角】,谢谢~~

    
        function f1() {
            console.log('进入f1,里面包含异步方法')
            return new Promise(function (resolve, reject) {//异步代码放到Promise中
                setTimeout(function () {//setTimeout模拟异步方法
                    console.log('异步执行完毕')
    
                    resolve('ok');//执行成功调用resolve,会执行then回调
                    //执行异步失败调用reject,会执行Promise catch回调
                    //reject('执行失败')
    
    
                }, 3000) })
    
        }
        function f2(f1result) {
            console.log(f1result, '执行f2')//ok 执行f2
        }
        f1().then(f2).catch(function (err) { console.log('f1执行失败:' + err) });
    

    第一次接触Promise不好理解就用平时常用的回调形式,把f2当参数传入f1,f1异步执行完毕后执行f2

        function f1(callback) {
            console.log('进入f1,里面包含异步方法')
            setTimeout(function () {//setTimeout模拟异步方法
                console.log('异步执行完毕');
                callback('执行回调');
            }, 3000);
    
        }
        function f2(f1result) {
            console.log(f1result, '执行f2')//ok 执行f2
        }
        f1(f2)///
    
    

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)
编辑
预览

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月15日
  • 已采纳回答 8月11日
  • 创建了问题 8月9日

悬赏问题

  • ¥15 来个会搭建付费网站的有偿
  • ¥100 有能够实现人机模式的c/c++代码,有图片背景等,能够直接进行游戏
  • ¥20 校园网认证openwrt插件
  • ¥15 以AT89C51单片机芯片为核心来制作一个简易计算器,外部由4*4矩阵键盘和一个LCD1602字符型液晶显示屏构成,内部由一块AT89C51单片机构成,通过软件编程可实现简单加减乘除。
  • ¥15 求GCMS辅导数据分析
  • ¥30 SD中的一段Unet下采样代码其中的resnet是谁跟谁进行残差连接
  • ¥15 Unet采样阶段的res_samples问题
  • ¥60 Python+pygame坦克大战游戏开发实验报告
  • ¥15 R语言regionNames()和demomap()无法选中中文地区的问题
  • ¥15 Open GL ES 的使用
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部