Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   return element.onchange (https://javascript.ru/forum/events/67842-return-element-onchange.html)

PROPHESSOR 11.03.2017 16:17

return element.onchange
 
Подскажите, как реализовать такую функцию?

function openDialog(){
    var a = document.createElement('input');
    a.type="file";
    a.onchange = function(){
        //Вернуть this.value
}   
    a.click();
    return //Тот самый this.value; a.value возвращает "" перед закрытием окна
}
}


Использование:
var file = openDialog();

PROPHESSOR 11.03.2017 16:17

Пробовал использовать alert() как блокирующее действие...
Цитата:

Ни фига...

SV0L0CH 11.03.2017 20:23

Реализовать собственный диалог ведущий себя аналогично prompt не получится. Так что придется переписывать весь код в асинхронном виде.

PROPHESSOR 12.03.2017 14:25

не вариант
Нужно хотя бы псевдосинхронный вид, что бы дождаться ответа и уже тогда выполнить return...

yazonnile 12.03.2017 17:58

function openDialog() {
	return new Promise(resolve => {
		var a = document.createElement('input');
		a.type="file";
		a.onchange = function(){
			resolve(e.value);
		};
		a.click();
	});
}

openDialog().then(value => {
	console.log(value);
});

PROPHESSOR 16.03.2017 17:24

Пробовал и такой вариант...
Как я понимаю, использовать как openDialog() не выйдет...

Хотя у меня есть идея приостановить код, пока не получится ответ, но не знаю, как это реализовать...


Часовой пояс GMT +3, время: 05:35.