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', пытаясь не слишком много оборачивать. Но это стало очень запутанным с сокрытием импорта и тому подобного.
Все танцы вокруг станут бессмысленными, как только асинхронные / ожидающие будут выровнены с обещаниями. Я пропустил некоторые из оберток, в основном, если вам нужен объект или значение из него, вы должны обернуть.