Javascript - использовать ответ от функции - PullRequest
1 голос
/ 21 февраля 2020

Я пытаюсь разработать глобальную функцию, чтобы ее было проще использовать из другого файла.

В какой-то момент моей работы у меня есть это:

            .then(function(response) {
                if(response.data.code == 200)
                {
                    Swal.fire({
                        title: 'Modifications enregistrées !',
                        icon: 'success',

                        }).then(function() {
                            console.log(response);

                            // a parameter function which will used here
                            afterFinish();

                        });
                }

Итак, во втором (), Я могу получить доступ к ответу в console.log.

Теперь я вызываю функцию, которую передал в качестве параметра. Эта функция также должна использовать атрибут «response». За исключением того, что это не работает.

Пример:

Мой afterFini sh Параметр функции:

afterFinish: function(response){
  console.log(response);
}

Так что в моей основной функции это должен дать что-то вроде:

then(function() {
     console.log(response);

     // a parameter function which will used here
     //afterFinish function;
     console.log(response);

});

1-й console.log () отправит мне правильный объект Response. Второй вернет мне пустой объект Response.

С другой стороны, если я помещу содержимое своей функции afterFini sh () непосредственно в код, а не вызываю ее, то я обязательно получу доступ это.

Кто-нибудь знает, что делать?

1 Ответ

1 голос
/ 21 февраля 2020

Передать response в afterFinish:

afterFinish(response)

Принять его как параметр в afterFinishдумаю вы уже эта часть):

afterFinish: function(response) {
    // ...
}

Пример Live, использующий setTimeout для асинхронности:

function fakeAjax() {
    return new Promise(resolve => {
        setTimeout(() => {
            resolve(Math.random());
        }, 800);
    });
}

function myFunction(options) {
    const {afterFinish} = options;
    fakeAjax()
    .then(response => {
        afterFinish(response);
    })
    .catch(error => {
        // ...handle/report eror...
    });
}

console.log("Running...");
myFunction({
    afterFinish: function(response) {
        console.log(`Response is ${response}`);
    }
});
...