Javascript - TypeError: x не является функцией - PullRequest
0 голосов
/ 06 июля 2018

Я создаю свой собственный javascript sdk для браузера, используя webpack и node.

Я построил функцию документа async / await, которая просто отправляет документ в API.

Эта функция может быть вызвана дважды в браузере (если есть второе изображение). Однако при втором вызове функции документа я получаю следующую ошибку.

TypeError: hsp.document не является функцией сделано

index.html

<script>

hsp = new HSP();

// function called on button click
async function done() {

    try {
         const doc = await hsp.document(transaction, token, url, this.frontBase64);

        console.log(doc);

        // If second image,  submit it also.
        if(this.backBase64) {
            const doc = await hsp.document(transaction, token, url, this.backBase64);

        }

    } catch (er) {
        console.log(er);
    }

}

</script>

sdk.js

async document(transaction, token, url, doc) {

        try {

            this.document = await this.api.submitDocument(transaction,
                token, url, doc);

            if (this.document.response.status !== 200) {

                return {
                    "success": false,
                    "response": this.document
                };

            }

            return {
                "success": true,
                "response": this.document
            };


        } catch (e) {
            return {
                "success": false,
                "response": e
            };
        }
    }

1 Ответ

0 голосов
/ 06 июля 2018

Очевидно, функция document определена в вашем объекте HSP.

При первом вызове, выполнив hsp.document, он выполняется и внутри функции ключевое слово this является ссылкой на экземпляр hsp, из которого вы вызвали функцию document.

Внутри вашей функции вы воздействуете на поле this.document в вашей функции документа, с тем, что возвращает вызов this.api.submitDocument. Таким образом, после первого вызова функции она больше не является функцией.

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