Как вызвать пользовательскую функцию асинхронно с помощью javascript?

Я использую в своем приложении один угловой сторонний модуль. Этот модуль предоставляет некоторые методы обратного вызова, такие как успешный вход в систему, сбой и т. Д., И я выполняю свои собственные сценарии внутри метода обратного вызова.

Но проблема здесь в том, что я хочу выполнить свой собственный скрипт асинхронно, что означает, что обратный вызов не должен ждать, пока мой пользовательский скрипт выполнится. Теперь, если в сценарии есть какие-либо проблемы, их обратный вызов не завершается, и из-за этого влияет весь сценарий. Поэтому я хочу вызвать свой собственный метод асинхронно из события обратного вызова третьей стороны.

Я пробовал все возможные способы, используя приведенный ниже пример, но ничего не работает. Я тоже использовал обещания, но не работал,

      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 ответ

поскольку это асинхронная функция, ваш try-catch не обнаружит никаких ошибок.

вы должны написать свой код следующим образом:

      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, у вас нет другого выбора, кроме как дождаться его результата.

Другие вопросы по тегам