Вы можете преобразовать событие как обещание, но следует также прослушать ошибку (если она существует), или она никогда не будет продолжаться, если произойдет какое-либо сбой:
const inputAsPromise = (ibanData) =>
new Promise((resolve, reject) => {
ibanData.oninput = resolve;
//@todo: onerror should be reject
});
async function initLookup() {
const ibanData = document.getElementById('iban-details');
let country = '';
let bban;
if (ibanData !== null) {
await inputAsPromise(ibanData);
const iban = ibanData.value;
if (iban.length === 12) {
country = iban.substr(0, 2);
bban = iban.substr(4, 12);
try {
const bankdata = await requestBICandBankname(
country,
bban,
);
console.log('bankdata', bankdata);
} catch (err) {
console.log(err);
}
}
}
}
Проблема сКод выше показывает, что oninput
, вероятно, срабатывает несколько раз, но вы можете выполнить обещание только один раз.Если это так, то вы можете решить эту проблему только при соблюдении определенных условий:
const inputAsPromise = (ibanData) =>
new Promise((resolve, reject) => {
ibanData.oninput = (e)=>ibanData.value.length === 12?resolve():'';
//@todo: onerror should be reject
});
Это был только пример, вы должны посмотреть, что будет работать в вашем случае.