Использование await и async для загрузки синтаксического анализа Tau-Prolog прежде всего

Моя задача - загрузить и проанализировать код 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');
}

Внутри запроса "init" есть сообщение журнала "Tau-Prolog init done". Если я не использую await/asnyc, сообщение "Prolog Init done" появляется перед сообщением Tau-Prolog, с приведенным выше кодом последовательность верна (сначала сообщение Tau Prolog, затем инициализация Prolog завершена).

Вопрос в том, что я не эксперт по JS. Будет ли это работать со всеми распространенными браузерами, есть ли побочные эффекты или недостатки, которые я не вижу при таком подходе? Есть ли лучшие решения?

Общий код продолжится с настройкой материала PixiJS.

Приветствую и спасибо за любой намек

Ганс

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');
        });
    });
}
Другие вопросы по тегам