如何在所有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
相关产品推荐
相关产品推荐

