使用 await 和 async 使在其他事情之前加载解析 Tau-Prolog。

问题描述 投票:2回答:1

我的任务是在浏览器中加载和解析Tau-Prolog代码,然后再执行其他的东西。我尝试了这种方法(webProlog.pl包含Tau-Prolog代码)。

var session = pl.create(1000); 
async function init_prolog() {
    // load tau
     await $.get("/web/webProlog.pl", function(data) {
        parsed = session.consult(data);
        session.query("init.");
        session.answer(printAnswer); // needed for triggering query
    });

    console.log('Prolog init done');
}

在"启动"查询有日志信息"Tau-Prolog初始化完成". 如果我不使用 awaitasnyc,就会出现""的信息。Prolog Init done"来 之前 Tau-Prolog消息,用上面的代码顺序是正确的(先是Tau Prolog消息,然后Prolog init done)。

问题是:我不是JS专家。这样做是否可以在所有常见的浏览器上使用,这种方法是否有我看不到的副作用或缺点?有没有更好的解决方案?

整体代码会延续PixiJS的东西设置。

干杯,谢谢你的提示

汉斯

javascript prolog tau-prolog
1个回答
1
投票

你必须以回调的方式执行你的代码。answer 方法。

var session = pl.create(1000); 
function init_prolog() {
    // load tau
    $.get("/web/webProlog.pl", function(data) {
        parsed = session.consult(data);
        session.query("init.");
        session.answer(function(answer) {
            printAnswer(answer);
            console.log('Prolog init done');
        });
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.