是否可以将回调函数转换为JavaScript中的生成器?

问题描述 投票:0回答:1

我正在使用Axios调用具有进度指示器的api端点。我想将onUploadProgress转换为生成器。

是否有转换此代码的方法

setProgress({ state: 'syncing', progress: 0 });

await axios.post(uri.serialize(parsedURI), body2, {
    headers: { session_id: sessionId },
    onUploadProgress: (progress) => {
        setProgress({ state: 'syncing', progress: progress.loaded / progress.total });
    },
});
setProgress({ state: 'syncing', progress: 1 });

变成这样]

yield { state: 'syncing', progress: 0 };

await axios.post(uri.serialize(parsedURI), body2, {
    headers: { session_id: sessionId },
    onUploadProgress: (progress) => {
        yield { state: 'syncing', progress: progress.loaded / progress.total };
    },
});
yield { state: 'syncing', progress: 1 };
await new Promise(resolve => setTimeout(resolve, 100));

问题在于onUploadProgress内部的yield,我想可能有一种使用它的方法,例如当您要将回调转换为您使用的promise时

new Promise(resolve => fn(resolve));

也许有一些有效的方法可用于类似发电机的发电机

new Generator(next => fn(next));

我正在使用Axios调用具有进度指示器的api端点。我想将onUploadProgress转换为一个生成器。有没有办法转换此代码setProgress({state:'...

javascript callback axios generator
1个回答
0
投票

您可以在进度处理程序中更新局部变量,并在循环中对其进行轮询,直到请求完成为止。这是草图:

© www.soinside.com 2019 - 2024. All rights reserved.