欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

微信小程序開(kāi)發(fā)中Promise的使用(aysnc,await)及場(chǎng)景分析

 更新時(shí)間:2024年10月18日 08:55:55   作者:養(yǎng)肥胖虎  
在微信小程序開(kāi)發(fā)中,錯(cuò)誤使用Promise可能導(dǎo)致無(wú)法正確獲取數(shù)據(jù),本文分析了一個(gè)常見(jiàn)錯(cuò)誤場(chǎng)景,即在異步函數(shù)中未使用await或.then()處理Promise,導(dǎo)致無(wú)法獲取異步操作的返回結(jié)果,文章提供了使用await和鏈?zhǔn)秸{(diào)用.then()的解決方法,幫助開(kāi)發(fā)者避免類(lèi)似錯(cuò)誤,確保數(shù)據(jù)正確返回

0.錯(cuò)誤描述

今天在開(kāi)發(fā)中犯了一個(gè)比較嚴(yán)重的錯(cuò)誤

對(duì)于Promise的錯(cuò)誤使用

場(chǎng)景:

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

<strong>// API請(qǐng)求工具函數(shù)
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`;
  // 添加常規(guī)的查詢參數(shù)
  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;
  }
};
/.................../
調(diào)用方法
let result = fetchTypelist()
console.log(result)</strong>

猜猜會(huì)打印什么?

 一個(gè)promise是的僅僅只是一個(gè)promise,并沒(méi)有拿到請(qǐng)求返回的結(jié)果

1.分析

async 函數(shù)默認(rèn)返回一個(gè) Promise,即使你在 async 函數(shù)中顯式返回了值。

當(dāng)你調(diào)用 async定義的函數(shù) (fetchTypelist) 時(shí),返回的實(shí)際上是一個(gè) Promise,而不是直接返回的數(shù)據(jù)。

2.解決方法

2.1.使用await等待方法的執(zhí)行,獲取返回值

<strong>const getTypelist = async () => {
  try {
    const typelist = await fetchTypelist();
    console.log(typelist); // 這里可以獲取到返回的 rows
  } catch (error) {
    console.error(error); // 處理錯(cuò)誤
  }
};</strong>

2.2.使用鏈?zhǔn)秸{(diào)用.then()來(lái)處理promise

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

3.成功獲取

到此這篇關(guān)于微信小程序開(kāi)發(fā)中Promise的使用(aysnc,await)的文章就介紹到這了,更多相關(guān)微信小程序Promise使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論