亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 setTimeout 函數從 redux 分派一個操作并通過 fetch 調用解析

使用 setTimeout 函數從 redux 分派一個操作并通過 fetch 調用解析

海綿寶寶撒 2023-09-14 20:20:24
正如標題所說,我遇到了一些有趣的承諾問題。所以我有一個使用方法導出對象的文件,該函數獲取 2 個值并返回 setTimeout。該函數獲取 redux 操作(函數調度)和 setTimeout 的值。問題是當我想要進行 fetch 調用,然后當承諾履行時調度操作。我最接近的代碼是:const products = async () => {    const response = await fetch('http://localhost:3009/products');    const data = await response.json();    return data}const TIMEOUT = 100export default {    getProducts: (cb, timeout) => setTimeout(() => {        new Promise(resolve => resolve(products)).then((data)=> cb(data))    }, timeout || TIMEOUT),}感謝所有嘗試提供幫助的人
查看完整描述

2 回答

?
縹緲止盈

TA貢獻2041條經驗 獲得超4個贊

好的,我的代碼確實有效!我的服務器有問題。



查看完整回答
反對 回復 2023-09-14
?
拉莫斯之舞

TA貢獻1820條經驗 獲得超10個贊

你的內容default export很難閱讀,而且可能有問題。嘗試聲明一個 const 并將其導出。


此外,您的Promise邏輯毫無意義:一旦timeout經過 millis,創建一個Promise自動解析為指向 function 的指針products,然后cb使用該函數作為參數進行調用。


const products = async () => {

    const response = await fetch('http://localhost:3009/products');

    const data = await response.json();

    return data

}


// Helper function to promisify setTimeout

const delay = (millis) => new Promise( resolve => setTimeout(resolve, millis));


// Use default argument value

const TIMEOUT = 100;

const getProducts = async (cb, timeout=TIMEOUT) => {

  await delay(timeout);

  const data = await products();

  cb(data);

}


export default getProducts


查看完整回答
反對 回復 2023-09-14
  • 2 回答
  • 0 關注
  • 120 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號