reactjs - 异步/等待在 createAsyncThunk 中定义的 for-of 循环中不起作用
问题描述
在使用createAsyncThunk
. 我希望它将按顺序为数组中的每个同步dispatch(performRunAllCells())
调用 API 。相反,调度导致一次被异步调用。这里发生了什么?updateBrowser()
cell
editor.cells
updateBrowser()
export const performRunAllCells = createAsyncThunk(
'editor/runAllCells',
async (_, { dispatch, getState, rejectWithValue }) => {
const { notebook: { selectedDataset } } = getState() as {notebook: {selectedDataset: string}};
const { editor } = getState() as {editor: EditorState};
try {
let results: DataEntity | undefined;
for (const cell of editor.cells) {
dispatch(setCellStatus({ id: cell.id, execStatus: '*' }));
results = await updateBrowser(selectedDataset, cell.editorContent);
dispatch(setCellStatus({ id: cell.id }));
}
return results;
} catch (e) {
return rejectWithValue(e.response.data);
}
},
);
编辑
目前我正在updateBrowser()
使用 setTimeout 进行测试:
export async function updateBrowser(selectedDataset: string, editorContent: string): Promise<DataEntity> {
return new Promise((resolve) => {
setTimeout(() => {
console.log('test');
resolve({
raw: editorContent, html: 'Test', console: 'Test',
});
}, 3000);
});
}
我可以通过上面的控制台日志知道它是同步/异步的。目前,它一次打印多个“测试”。
解决方案
没关系。我在其他地方犯了一个错误,实际上并没有调用代码。修复后它现在可以工作了。
推荐阅读
- android - 在我的 Firebase 帐户中保存实时数据库时出错
- html - ionic 3 中的聊天界面
- pycharm - 无法在 Pycharm 中关闭自动括号外观
- python - 当我运行此代码时,它显示错误
- python-3.x - 计算机视觉图像掩蔽问题
- typescript - 找不到“merge-graphql-schemas”TYPESCRIPT 的声明文件
- api - 微信:是否存在 SDK / API?
- ajax - 如何在 .Net Core 中为 web api ajax 调用启用 cors
- javascript - 将从函数返回的数据传递给聚合物自定义元素
- paypal - 沙盒贝宝集成