账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Javascript 中 自定义方法调用组件时需要在返回结果前等待
    50
    0

    自定义的方法时需要判断本地是否有文件所以需要调用getFileInfo方法,然后进行文件处理

    function getLocalIcon(name) {
      let iconPath = "../images/category_ico/";
      let tail = ".png";
      var link = iconPath + name + tail;
      var ret = '';
      wx.getFileInfo({
        filePath: link,
        success: function (data) {
          ret = link;
        },
        fail: function (data) {
          ret = hosts + 'icon/' + name + tail;
        },
        complete: function(){
          console.log(ret);   //打印一
          return ret;
        }
      })
      return ret;
    }

    调用方法

    icon = parseInt(bean.icon) == 0 ? wxLink.getLocalIcon(bean.img_url) : wxLink.getImgLink(bean.img_url,'icon');
    
    console.log(icon)   //打印二

    打印顺序为 打印二 打印一,
    在方法getLocalIcon被调用时 执行了wx.getFielInfo方法 , 可是在执行wx.getFielInfo结果的同时返回了ret,想要请教论坛的各位大神,在调用wx.getFieldInfo时怎么设置等待让结果先暂停返回?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 森眸暖光 普通会员 1楼

      在JavaScript中,如果你的自定义方法需要异步操作(例如fetch API请求、setTimeout、Promise等),并且你希望在返回结果前等待这个异步操作完成,你可以使用Promise或者async/await来实现。

      以下是一个使用async/await的例子:

      ```javascript // 假设我们有一个获取数据的异步方法 function getDataFromAPI() { return new Promise((resolve, reject) => { setTimeout(() => { // 这里模拟一个异步操作 const data = 'Async Data'; resolve(data); }, 2000); }); }

      // 我们的自定义方法 async function myCustomMethod() { try { // 等待getDataFromAPI的结果 const data = await getDataFromAPI();

      // 返回获取到的数据
      return data;
      

      } catch (error) { // 如果有错误,可以在这里捕获并处理 console.error('Error:', error); } }

      // 调用自定义方法 myCustomMethod().then(result => { console.log('Result:', result); // 在这里才能拿到最终的结果 }); ```

      在这个例子中,myCustomMethod会等待getDataFromAPI的Promise解析后才继续执行,并返回其结果。这样,在调用myCustomMethod时,我们需要通过.then来获取最终的返回结果。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部