当前位置: 代码网 > it编程>编程语言>Javascript > 微信小程序开发中Promise的使用(aysnc,await)及场景分析

微信小程序开发中Promise的使用(aysnc,await)及场景分析

2024年11月03日 Javascript 我要评论
0.错误描述今天在开发中犯了一个比较严重的错误对于promise的错误使用场景:微信小程序中展示搜索条件列表<strong>// api请求工具函数const apirequest = (

0.错误描述

今天在开发中犯了一个比较严重的错误

对于promise的错误使用

场景:

微信小程序中展示搜索条件列表

<strong>// api请求工具函数
const apirequest = (url, method = 'get', headers = {}) => {
  return new promise((resolve, reject) => {
    wx.request({
      url,
      method,
      header: headers,
      success: (res) => resolve(res),
      fail: (error) => reject(error)
    });
  });
};
const fetchtypelist = async () => {
  const app = getapp();
  const queryparams = app.globaldata.queryparams;
  console.log(queryparams)
  let url = `${api_base_url}/industrytype/page?pageno=1&pagesize=10`;
  // 添加常规的查询参数
  for (const [key, value] of object.entries(queryparams)) {
    if (value) {
      url += `&${key}=${encodeuricomponent(value)}`;
    }
  }
  try {
    const headers = {}; // 如果需要token,可以在这里添加
    const response = await apirequest(url, 'get', headers);
    if (response.data.code === 200) {
      console.log(response.data)
      return response
    } else {
      throw new error('获取地址列表失败');
    }
  } catch (error) {
    throw error;
  }
};
/.................../
调用方法
let result = fetchtypelist()
console.log(result)</strong>

猜猜会打印什么?

 一个promise是的仅仅只是一个promise,并没有拿到请求返回的结果

1.分析

async 函数默认返回一个 promise,即使你在 async 函数中显式返回了值。

当你调用 async定义的函数 (fetchtypelist) 时,返回的实际上是一个 promise,而不是直接返回的数据。

2.解决方法

2.1.使用await等待方法的执行,获取返回值

<strong>const gettypelist = async () => {
  try {
    const typelist = await fetchtypelist();
    console.log(typelist); // 这里可以获取到返回的 rows
  } catch (error) {
    console.error(error); // 处理错误
  }
};</strong>

2.2.使用链式调用.then()来处理promise

<strong>fetchtypelist()
  .then((typelist) => {
    console.log(typelist);
  })
  .catch((error) => {
    console.error(error);
  });</strong>

3.成功获取

到此这篇关于微信小程序开发中promise的使用(aysnc,await)的文章就介绍到这了,更多相关微信小程序promise使用内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com