Лучший ответ на заданный вопрос - не пытаться получить доступ к результатам после срабатывания обработчика событий. Вместо этого вы хотите поместить код, который использует результат обещания, в обратный вызов .then()
.
Думайте об этом так: программирование на Javascript основано на событиях. Это означает, что вы все время пишете код, который говорит: «когда foo происходит, запустите функцию bar ». И этот тип кода часто является вложенным, и это нормально для последовательности событий.
В вашем случае вы хотите написать код, который выражает следующее:
Всякий раз, когда срабатывает событие searchPlaceOnWebMap
, позвоните, чтобы получить подходящие места на основе полезной нагрузки события. Когда этот вызов вернется, сделайте что-нибудь с результатами.
Способ что-то сделать с результатами в этом случае, потому что .getPlaces()
возвращает обещание, это использовать синтаксис .then(results => doSomething(results))
или async/await
, если он вам доступен.
Но важно понимать, что, поскольку вы не знаете, когда обещание будет разрешено, вы не можете сразу получить доступ к его результатам сразу после запуска события, потому что они еще не будут доступны.
Конечно, вы можете хранить объект обещания, возвращаемый .getPlaces()
где-нибудь, и обращаться к нему в другом месте после вызова .trigger()
, но это не очень хорошая идея, так как он вводит побочный эффект изменения внешнего состояния, что делает для кода, который сложно протестировать, отладить и поддерживать. Держитесь подальше от этого, если можете.