为了账号安全,请及时绑定邮箱和手机立即绑定

使用 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 关注
  • 52 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信