You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Google Drive集成代码中的Promise转为async/await语法

将Google Drive集成代码中的Promise转为async/await语法

改写思路

把原箭头函数声明为async函数,用await替代.then()链式调用,异步操作的错误处理用try/catch块替代.then()的第二个回调参数,完全保留原代码逻辑,仅优化写法的简洁性和可读性。


第一个函数:listFiles 改写后

const listFiles = async () => {
    setLoading(true);
    try {
        const response = await gapi.client.drive.files.list({
            pageSize: 500,
            fields: 'nextPageToken, files(id, name, mimeType, modifiedTime)',
        });
        setLoading(false);
        const res = JSON.parse(response.body);
        setDocuments(res.files);
    } catch (err) {
        setLoading(false);
        // 原代码未处理错误,可按需补充日志或提示逻辑
        console.error('获取文件列表失败:', err);
    }
};

改动说明:

  • 函数添加async关键字,标记为异步函数
  • 用await等待文件列表接口的异步返回结果
  • 新增try/catch块(推荐),确保出错时也能重置加载状态,避免页面一直处于加载状态

第二个函数:initClient 改写后

const initClient = async () => {
    setLoading(true);
    try {
        await gapi.client.init({
            apiKey: API_KEY,
            clientId: CLIENT_ID,
            discoveryDocs: DISCOVERY_DOCS,
            scope: SCOPES,
        });
        setConnectStorage(true);
        gapi.auth2.getAuthInstance().isSignedIn.listen(updateSigninStatus);
        updateSigninStatus(gapi.auth2.getAuthInstance().isSignedIn.get());
        setLoading(false);
    } catch (error) {
        setLoading(false);
        alert(error);
    }
};

改动说明:

  • 函数添加async关键字,标记为异步函数
  • 用await等待客户端初始化的异步结果
  • 原.then()的成功回调逻辑直接放在await之后执行,失败回调逻辑移至catch块中
  • 保证无论初始化成功或失败,加载状态都会被正确重置

内容的提问来源于stack exchange,提问作者ABs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 05:30:44