Как ждать на асинхронной функции JavaScript без поддержки async / await? - PullRequest
0 голосов
/ 19 ноября 2018

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

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

Но в webengine все изменилось.

<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-код async , который был sync , в сценариях ведущего порядкане работает.

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

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

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

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

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

...