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

如何等待PyScript环境完全初始化并监听控制台消息执行JS函数?

解决方案

一、监听控制台特定消息并触发函数

浏览器中无法直接读取stdout,但可以通过重写console.log方法拦截输出内容,判断是否匹配目标消息后执行指定函数。

实现代码

// 保存原生console.log方法,避免覆盖后丢失原有功能
const originalConsoleLog = console.log;

// 重写console.log
console.log = function(...args) {
    // 先调用原生方法,保证控制台正常输出内容
    originalConsoleLog.apply(console, args);
    
    // 将输出参数转为字符串,检查是否包含目标消息
    const outputContent = args.join(' ');
    if (outputContent.includes('ABCD:READY')) {
        // 触发目标函数
        finallyStart();
        // 可选:恢复原生console.log,避免重复触发
        console.log = originalConsoleLog;
    }
};

// 你的目标函数
function finallyStart() {
    console.log('finallyStart 已执行');
    // 这里编写业务逻辑
}

注意事项

这段代码需要在目标导入脚本之前加载执行,才能确保拦截到它的控制台输出。如果目标脚本是异步加载的,也要保证这段拦截代码先于脚本执行。


二、等待PyScript完全初始化

PyScript提供了官方的事件和API来监听运行环境的初始化状态,以下是两种可靠的实现方式:

方式1:监听全局py-ready事件

当PyScript的整个运行环境(包括Python解释器、依赖包等)完全初始化完成后,会在document上触发py-ready事件:

document.addEventListener('py-ready', () => {
    console.log('PyScript 运行环境已完全就绪');
    // 这里编写依赖PyScript的业务逻辑
});

方式2:使用whenReady API(PyScript 2.x+)

如果使用的是PyScript 2.x及以上版本,可以直接导入并使用whenReady异步方法:

import { whenReady } from 'pyscript';

async function initAfterPyScript() {
    await whenReady();
    console.log('PyScript 环境初始化完成');
    // 执行后续逻辑
}

initAfterPyScript();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:01:28