Jak poprawnie opoznic wyjscie z funkcji do czasu spelnienia warunku

0

Ten brzydki kod ponizej pokazuje to, czego nie potrafie zrobic. Otoz jak poprawnie zaimplementowac sytuacje, w ktorej 1 i 2 wyswietla sie bezwarunkowo, a 3 dopiero wtedy, gdy zostanie wykryte ciastko (przykladowy warunek). Cos mi tu pachnie promise'ami, ale brakuje mi wyobrazni


function one() {
	console.log('1');
	console.log('2');
	two();
	console.log('3');
}

function two() {	
	while (true) {
	    if (document.cookie.indexOf('SOMECOOKIE=') != -1) {            
	        break;
	    } 
	}
}

1

Ale wiesz, że to co tam próbujesz zrobić to blokowanie całego programu do czasu pojawienia się cookie? ;/
A kto to cookie ustawia? Raczej Ty - tam wywołaj ten kod. Lub użyj https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/cookies/onChanged o ile nie musisz obsłużyć IE/Edge

0

Możesz też użyć jakiegoś EventEmittera jeżeli nie masz tego przywileju użycia cookies.onChanged:

var ee = new EventEmitter();

ee.on('cookie:added', function(cookie) {
    if(cookie.name === 'SOMECOOKIE') {
        console.log(cookie);
    }
});

// gdzieś tam w kodzie
document.cookie = "SOMECOOKIE=foobarbaz";
ee.emit('cookie:added', {name: 'SOMECOOKIE', value: 'foobarbaz'});

1 użytkowników online, w tym zalogowanych: 0, gości: 1