Как ждать на асинхронной функции JavaScript без поддержки async/await?

Это связано с портированием с Qt Webkit в Qt Webengine, Следующий код хорошо работает в webkit.

<script type="text/javascript">
  var result = objectExposedFromC++.someFunction(); //sync;
  console.log("I want to use result here");
</script>

Но все изменилось в веб-двигателе.

<script type="text/javascript">
  var result = objectExposedFromC++.someFunction(); //async;
  console.log("I want to use result here, but result isn't avaiable");
</script>

Один из способов заставить его работать показан ниже.

<script type="text/javascript">
  var result = objectExposedFromC++.someFunction(function(returnValue){// callback after async return;
    console.log("I can use returnValue now.");
  }); //async
  //other code execute before callback;
</script>

Но js-код исчисляется десятками тысяч, и старый клиент браузера не будет работать после изменения. Я просто хочу сделать асинхронный вызов для синхронизации вызова.

Все стало лучше, когда я нашел async/await in ES7, но это не решение.

<script type="text/javascript">
  (async function(){
    //async_fucntion will call objectExposedFromC++.someFunction() finally;
    var result = await async_fucntion();
    console.log("I can use returnValue now.");
  })()
</script>

<script type="text/javascript">
  (async function(){
      //other js code that call async fucntion too.
  })()
</script>

`` `

Как вы видете,

(1) Я должен сделать весь свой js-код асинхронным, что привело к неупорядоченности сценариев порядка.

(2) старый клиент браузера на основе qt webkit также не будет работать, потому что он может не поддерживать async/await,

Итак, как ждать на асинхронной функции JavaScript без поддержки async/await? С этим я могу

(1) не нужно изменять какой-либо существующий код JS. Клиент браузера может внедрить новый код js для изменения поведения асинхронных функций.

(2) новый клиент браузера и старый клиент браузера работают одновременно.

Любые советы приветствуются. Заранее спасибо.

0 ответов

Другие вопросы по тегам