延迟api调用的好方法是什么?

在我的应用程序(React + Redux + axios + redux-thunk + Typescript)中,当我调用 API、更改数据库中的项目并在表中显示当前更改的状态时,我遇到了一种情况。?所以,它看起来像:

const changeItem = () => changeItemState(item.id).then(getItem(item.id));

这两个操作(changeItemStategetItem)都是从减速器文件中导入的。? 问题是,在后端站点更改项目过程花费的时间太长。因此,我重新加载表(调用 api 以获取项目 - getItem(item.id))但后端更改过程仍在进行中,因此我收到旧状态。经过100-300毫秒我可以再次查询项目(例如刷新页面),并获得项目的新状态。但我不想手动完成。我想后端准备好我的项目以显示新状态重新加载表。

问题是 - 如何延迟获取项目操作?是否有任何前端模式?我想避免使用这样的“setTimeout()”方法(我认为这不是理想的解决方案):

const changeItem = () => changeItemState(item.id).then(setTimeout(function(){ getItem(item.id); }, 300));,

回答

你可以这样承诺setTimeout

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

然后,

const changeItem = () =>
  changeItemState(item.id)
    .then(() => delay(300))
    .then(() => getItem(item.id));

或等效地使用异步函数

const changeItem = async () => {
  await changeItemState(item.id);
  await delay(item.id);
  return getItem(item.id);
}


以上是延迟api调用的好方法是什么?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>