Dart JS Interop 0.6.0 и JS Promises - решение

Похоже, что Interop или dart2JS явно не перехватывают Обещания JS.

ServiceWorkerContainer swContain = window.navigator.serworker;

swContain.register(workerScriptURI,scope).then((ServiceWorkerRegistration rego){
/// Here confirm scope and the state, handle and unregister if required.
)};

Тем не менее, кажется, что это невозможно осуществить без обетования и завершения. Когда я тогда не могу заставить работать надежным способом.

Длинный пост здесь: https://groups.google.com/a/dartlang.org/forum/

Обходной путь, с которым я бегу

Так что это хорошо работает с 0.6.0:

@JS("Promise")
class Promise {

external void then(Function onFulfilled, Function onRejected);
external Static Promise resolve (dynamic value);
}

@JS("ServiceWorkerContainer")
class ServiceWorkerContainer {

external Promise register(String scriptURL, Map options)
}

main(){

    ServiceWorkContainer swCTX = navigator.serviceWorker;

    successHandler(dynamic value) {
       // Call Promise resolve(value) if the not settled.  Ultimately

       ServiceWorkerRegistration swRego = value;

       // Now call anything you want on the Rego, just wrap what you need.

    failureHandler(dynamic value) {
       // Deal with it here


    /// This the main show here.
    swCTX.register('script-name.dart.js', scope).then(allowInterop(successHandler), allowInterop(failureHandler))

}

Я попытался смешать вышесказанное с существующей библиотекой 'dart:html', пытаясь не слишком много оборачивать. Но это стало очень запутанным с сокрытием импорта и тому подобного.

Все танцы вокруг станут бессмысленными, как только асинхронные / ожидающие будут выровнены с обещаниями. Я пропустил некоторые из оберток, в основном, если вам нужен объект или значение из него, вы должны обернуть.

0 ответов

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