Конечно, есть много таких подходов, как синхронный запрос, обещание, но из моего опыта я думаю, что вы должны использовать подход обратного вызова. Естественно, что асинхронное поведение Javascript. Итак, ваш фрагмент кода можно переписать немного иначе:
function foo() {
var result;
$.ajax({
url: '...',
success: function(response) {
myCallback(response);
}
});
return result;
}
function myCallback(response) {
// Does something.
}
По умолчанию все двойные сложения {{var}}
, внедренные в Handlebars, будут экранированы HTML. Это делается по соображениям безопасности, чтобы избежать уязвимостей DOM XSS . Поскольку ваша переменная может содержать любые данные, включая пользовательские данные или любые недостоверные данные.
В некоторых случаях вам необходимо внедрить свои данные как есть, не ускользая. Там, где используется триплекс {{{var}}}
. Но каждый раз, когда вы это делаете, вам нужно подумать о том, что может быть в ваших данных, и можете ли вы ему доверять?
Подробнее о HTML Escaping на рулевых колонках сайт.