Использование 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');
});
});
}