#javascript #jquery #ajax
Вопрос:
Я хочу использовать результат getAccessToken() в функции openFastLink, однако функция не ожидает получения токена, поскольку JS является асинхронным. Я не могу использовать обратные вызовы, так как функция openFastlink является всплывающим окном и должна быть привязана непосредственно к кнопке, чтобы браузер не блокировал ее. Маркер доступа также должен быть получен в том же событии щелчка, что и openFastlink, в качестве требования, и я хочу избежать синхронного вызова ajax с «async: false».
Сейчас я пытаюсь использовать Async/await ниже, однако функция openFastLink по-прежнему не ожидает getAccessToken (), что приводит к ошибке. Я довольно новичок в Js, поэтому буду признателен за любую помощь в решении этой проблемы с учетом требований.
async function getAccessToken(args) {
const result = await $.ajax({
url: "/request/access-token",
type: 'POST'
});
return result['access_token'];
}
$('#openFastlink').click(function() {
window.fastlink.open({
fastLinkURL: 'https://fl4.prod.yodlee.com.au/...',
accessToken: 'Bearer ' await getAccessToken(),
forceIframe: true,
iframeScrolling: true,
params: {
configName : 'Aggregation'
},
onSuccess: function (data) {
alert('account linked!');
}
},
'container-fastlink');
});
Комментарии:
1. «…однако функция openFastLink все еще не ожидает getAccessToken()…» Этот код вообще не будет выполняться. Синтаксический анализатор выдаст синтаксическую ошибку, потому что вы не можете использовать
await
ее в нерабочемasync
режиме.