#javascript #angular #oojs
Вопрос:
Я использую в своем приложении один сторонний модуль angular. Этот модуль предоставляет некоторые методы обратного вызова, такие как успех входа в систему, сбой и т.д., И я выполняю свои пользовательские сценарии внутри метода обратного вызова.
Но проблема здесь в том, что я хочу выполнить свой пользовательский сценарий асинхронно, что означает, что обратный вызов не должен ждать, пока мой пользовательский сценарий не будет выполнен. Теперь, если в сценарии есть какие-либо проблемы, их обратный вызов не завершается, и из-за этого влияет весь сценарий. Поэтому я хочу вызвать свой пользовательский метод асинхронно из события обратного вызова третьей стороны.
Я перепробовал все возможные способы, используя приведенный ниже пример, но ничего не работает. Я также использовал обещания, но они не работают,
EV.Event.on('login.success', function (res) { //third party's callback
try {
custCallbackLoginSuccess(res); //my custom method
} catch(Error) {
console.log("error" Error);
}
});
async function custCallbackLoginSuccess(res) {
var success = test; //here test is undefied. so 'login.success' -should not wait untill this execution completes. It should complete without any error
}
Ответ №1:
поскольку custCallbackLoginSuccess
это асинхронная функция, ваш try-catch login.success
не обнаружит никаких ошибок.
вы должны написать свой код так:
EV.Event.on('login.success', function (res) { //third party's callback
custCallbackLoginSuccess(res); //your custom method
});
async custCallbackLoginSuccess(res) {
try {
var success = test;
} catch(Error) {
console.log("error" Error);
// don't throw any error here if you don't want to disturb the caller
}
}
если вам нужен результат custCallbackLoginSuccess
в login.success
, у вас нет другого выбора, кроме как ждать, чтобы получить его результат.
Комментарии:
1. Спасибо вам за ответ. Я попробовал вышесказанное, но все равно «вход.успех» не завершен. Это выбрасывает ошибку
2. можете ли вы дать мне стек вызовов ошибок? возможно, загрузите его куда-нибудь