Я создаю свой собственный javascript SDK borwserside, используя webpack и node.
У меня есть простая функция аутентификации, которую я создал в моем SDK. это простая функция обратного вызова, которая запрашивает API и возвращает, если результат был успешным или нет в форме обратного вызова.
sdk.js
async authenticate(callback) {
try {
this.account = await this.repo.authenticate(this.product, this.origin);
if (this.account.success === false) {
return callback({
"success": false,
"response": "Failed To Authenticate"
});
}
return callback({
"success": true,
"response": this.account
});
} catch (e) {
return callback({
"success": false,
"response": e
});
}
}
Теперь в моем браузере у меня есть индексный файл. Который будет создавать экземпляр объекта и вызывать эту функцию.
index.html
<script>
hsp = new HSP();
// function called on button click
async function done() {
// Works
hsp.authenticate((res) => {
console.log(res);
});
// DOES NOT WORK
try {
const auth = await hsp.authenticate();
console.log(auth);
} catch (er) {
console.log(er);
}
}
</script>
В вышеприведенном примере в index.html работает функция обратного вызова authenticate, но не работает версия аутентификации await / async в блоке try catch. Почему и как мне заставить это работать.
Я хочу, чтобы оба варианта работали.
Я получаю следующую ошибку. Который ссылается на блок catch и console.log (er).
TypeError: t не является функцией
в t.value (index.js: 41)