javascript - 使用 setTimeout 函数,该函数从 redux 分派一个动作并通过 fetch 调用解决一个承诺链
问题描述
正如标题所说,我遇到了一些关于承诺的有趣问题。所以我有一个用方法导出对象的文件,这个函数获取 2 个值并返回一个 setTimeout。该函数获取一个 redux 操作(函数调度)和一个 setTimeout 的值。问题是当我想进行 fetch 调用,然后当 promise 完成时调度操作。最接近我得到它的代码:
const products = async () => {
const response = await fetch('http://localhost:3009/products');
const data = await response.json();
return data
}
const TIMEOUT = 100
export default {
getProducts: (cb, timeout) => setTimeout(() => {
new Promise(resolve => resolve(products)).then((data)=> cb(data))
}, timeout || TIMEOUT),
}
感谢所有试图提供帮助的人
解决方案
你default export
的很难阅读,可能有问题。尝试声明一个 const 并导出它。
此外,您的Promise
逻辑没有意义或意义不大:一旦timeout
通过了毫秒,创建一个Promise
自动解析为指向函数的指针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
推荐阅读
- javascript - 在 Angular Observables 中订阅后记录数据
- sql-server-2008-r2 - 为什么我们不能在 SQL Server 中查看已删除的表
- browser - 隐藏式字幕轨道不适用于所有浏览器
- selenium - 自定义 /etc/hosts 文件上的 docker-selenium ?
- python - 这里继承合适吗?
- javascript - 将点击事件绑定到 Javascript 函数
- android - 尽管不在布局中,但仍在创建片段
- vba - 如何找出使用 VBA 写入 Excel 单元格时出现错误的原因?
- docker - CSV 数据集配置 - Jmeter Docker
- amazon-web-services - AWS Fargate ALB DNS 未解析