Одним из вариантов будет использование обработчика событий.Когда Directory
устанавливается с помощью щелчка или, возможно, события изменения, если оно запускается, присоедините обработчик, который принимает это событие и передает его обратно функции в главном окне.Для этого потребуется сделать ваш код асинхронным, чтобы у вас был вызывающий объект, который вызывает showTargetDirectoryChooser()
, и обратный вызов, который принимает результат каталога в виде отдельных функций.Это не должно быть слишком сложно, чтобы перестроить ваш код там и разбить его на вызывающую сторону и обратный вызов.1006 *
function showTargetDirectoryChooser(){
var win = new Window( 'dirchooser_' + new Date().getTime() , {className: 'alphacube', width: 320, height: 470, url: '/directories/choose', maximizable: false});
win.showCenter();
win.setDestroyOnClose();
setTimeout("pollDirectory()", 500); // poll in a half second
}
function pollDirectory() {
if(win.content.contentWindow.Directory != null) {
callback(win.content.contentWindow.Directory); // you will need an asynch callback
} else {
setTimeout("pollDirectory()", 500); // poll in a half second
}
}
Для этого также требуется, чтобы ваш код был асинхронным.
Другой вариант - изучить jquery wait , но это время ожидания, а не ожидание при условии.Или есть набор реактивных расширений для JS , но это выглядит излишним для того, что вы делаете.Однако концепция наблюдаемого может быть чем-то, что вы хотите рассмотреть.