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

如何在所有Promise化API请求全部完成后显示按钮?

解决方案

可以使用Promise.all()方法来等待所有Promise完成,之后统一处理结果并显示按钮,这样既简洁又能保证所有请求都完成后再执行后续操作。

修改后的代码如下:

function somefunction() {
    // 声明状态变量,避免全局污染
    let status1, status2, status3;
    
    // 将三个API调用的Promise存入数组
    const apiPromises = [
        zoho.crm.connection.invoke(shtCon, req_data),
        zoho.crm.connection.invoke(shtCon, req_data),
        zoho.crm.connection.invoke(shtCon, req_data)
    ];
    
    // 等待所有Promise完成
    Promise.all(apiPromises)
        .then(responses => {
            // 从响应数组中分别取出每个请求的状态
            status1 = responses[0].status;
            status2 = responses[1].status;
            status3 = responses[2].status;
            
            // 所有请求完成后,执行显示按钮的逻辑
            showButton(); // 替换成你实际显示按钮的代码
        })
        .catch(error => {
            // 处理任意一个请求失败的情况
            console.error('某个API请求失败:', error);
        });
}

// 示例:显示按钮的函数
function showButton() {
    // 比如获取按钮元素并设置为可见
    const button = document.getElementById('your-button-id');
    if (button) {
        button.style.display = 'block';
    }
}

关键说明:

  • Promise.all()接收一个Promise数组,只有当数组中所有Promise都resolve后,才会进入then回调;如果任意一个Promise被reject,会直接进入catch回调。
  • 修正了原代码中fucntion的拼写错误(应为function),避免运行报错。
  • 建议用let/const声明状态变量,避免意外的全局变量污染。
  • 如果需要处理请求失败场景,可在catch中添加错误处理逻辑,比如提示用户或重试请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:30:13