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

已添加try catch块仍出现Unhandled promise rejection错误如何解决

问题原因

  • 你的代码中Parse.Object.saveAll(results)是异步方法,返回Promise对象,你既没有添加await关键字等待它执行完成,也没有绑定.catch()处理逻辑。
  • 外层的try/catch只能捕获当前同步执行流、以及被await的Promise抛出的错误,未被await的saveAll方法抛出的错误会脱离当前try/catch的捕获范围,就会触发未处理的Promise rejection警告。
  • 额外优化点:原代码复用同一个emptyArray对象赋值给所有记录的followedBy字段,部分Parse版本可能触发对象引用冲突,建议每个记录单独赋值空数组。

修正后代码

Parse.Cloud.job("updateFollowedBy", async (request) => {
    try {
        const date = new Date();
        const query = new Parse.Query("Categories");
        const results = await query.find({useMasterKey:true});
    
        results.forEach(object => {
            if (object.get("followedBy")) {
                object.set("followedBy", []);
            }
        });
        // 新增await等待保存操作完成,错误会被外层catch捕获,新增useMasterKey避免权限报错
        await Parse.Object.saveAll(results, { useMasterKey: true });  
        return `Successfully updated column on ${date}`; 
    } 
    catch(e) {
        console.error('更新出错:', e);
        // 云任务建议抛出错误方便后台识别任务执行状态
        throw e;
    }
});

额外注意事项

  • 如果你的Categories表记录数超过1000条,默认query.find只能返回前1000条数据,建议改用query.eachBatch批量处理数据,避免漏更。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:06:04