Hat es funktioniert so: Ich habe im Grunde eine 30-Sekunden-Timeout auf dem Toast unter der Annahme, dass meine Geolocation und Georesult (GeoFire) dauert nicht länger als 30 Sekunden.
Ich bekomme die Länge der zurückgegebenen Array von Map-Markierungen und multiplizieren Sie diese durch die Javascript-Timeout-Ereignisse. Ich entferne schließlich mdl-snackbar - aktiv, die den Toast versteckt. Also, im Grunde - es funktioniert.
AKTUALISIERT
Die oben hatte tatsächlich ein großes Problem, dass zusätzliche Toast, bis das abgeschlossen lange Timeout nicht angezeigt werden soll. Ich konnte nicht herausfinden, wie man das clearTimeout() method anwendet, um es zu reparieren, also fand ich eine Lösung, die funktioniert - den Toast nach oben und unten durch einfaches Umschalten der mdl-Snackbar - aktive Klasse - keine Timer-Einstellung notwendig.
So Toast als normal mit diesem Code aufrufen, einfach tools.toast ('Hallo Welt', Fehler, 3000). So öffnen und schließen Sie Toast-Aufrufe tools.toastUp ('hey') bzw. tools.toastDown() programmatisch. So könnten Sie tools.toastDown rufen nach ein Versprechen löst oder etwas ...
var config = (function() {
return {
timeout: 50, //in milliseconds
radius: 96, //in kilometers
};
})();
var tools = (function() {
return {
toast: function(msg,obj,timeout){
var snackbarContainer = document.querySelector('#toast'); //toast div
if(!obj){obj = ''}
if(!timeout){timeout = 2750}
data = {
message: msg + obj,
timeout: timeout
};
snackbarContainer.MaterialSnackbar.showSnackbar(data);
},
toastUp: function(msg){
var toast = document.querySelector('#toast');
var snackbarText = document.querySelector('.mdl-snackbar__text');
snackbarText.innerHTML = msg;
toast.classList.add("mdl-snackbar--active");
},
toastDown: function(count) {
setTimeout(function() {
var toast = document.getElementById("toast");
toast.classList.remove("mdl-snackbar--active");
}, config.timeout * count);
},
};
})();
Falls Sie after a timeout loop tools.toastDown schießen möchten, können Sie tun:
function drop(filteredMeetings) {
tools.clearMarkers(true);
for (var i = 0; i < filteredMeetings.length; i++) {
//drop toast once markers all dropped
if(i === filteredMeetings.length - 1) {
tools.toastDown(i);
}
tools.addMarkerWithTimeout(filteredMeetings[i], i * config.timeout);
}
}
Funktioniert wie ein Charme, danke! – Zeretil