You need to enable JavaScript to run this app. Node.js触发事件发HTTP请求时高阶函数内console输出失效
优惠活动
大模型
产品
解决方案
定价
更多

Node.js触发事件发HTTP请求时高阶函数内console输出失效

问题原因

async类型的handler函数会在http请求的回调执行完成前就提前返回,运行环境会在函数返回后直接暂停执行上下文,不会等待异步回调逻辑跑完,因此回调里的console语句没有触发机会。

修复代码

把http请求封装为Promise,用await等待请求完整执行后再返回:

const https = require('https');

exports.handler = async (event) => {
    // 封装HTTP请求为Promise
    const fetchData = new Promise((resolve, reject) => {
        https.get('https://test.com', (res) => {
            console.log('statusCode:', res.statusCode);
            console.log('headers:', res.headers);
            
            let data = "";
            res.on('data', (chunk) => {
                data += chunk;
            });
            
            res.on('end', () => {
                const parsedUrl = JSON.parse(data);
                console.log(parsedUrl);
                resolve(parsedUrl);
            });
        }).on('error', (err) => {
            console.error(err);
            reject(err);
        });
    });

    // 等待请求执行完成再返回
    await fetchData;
    return 0;
};

注意事项

  • 原代码直接打印整个res对象会输出大量冗余内容,改为打印res.statusCode更合理
  • 该方案同时适用于Serverless环境和本地Node.js运行场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 16:45:00