Функция времени ожидания в Axios не действует в среде NativeScript (-Vue) - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть проект Nativescript-Vue, созданный с использованием vue init nativescript-vue/vue-cli-template с использованием библиотеки axios.

Если я запускаю следующий фрагмент кода в среде браузера, он работает нормально, то есть время ожидания соответствует ожидаемому с такимнастройка короткого тайм-аута:

    const apiClient = axios.create({
      timeout: 1,
    })

    apiClient.request({
      url: 'https://jsonplaceholder.typicode.com/todos/1',
    }).then(response => {
      console.log('this.apiClient.defaults.timeout', apiClient.defaults.timeout)
      console.log(response.config)
      console.log(response.data)
    }).catch(e => {
      console.log(e)
    })

Однако, когда я запускаю код в проекте NativeScript-Vue на Android, запрос завершается так, как если бы вообще не было настройки тайм-аута. Несмотря на то, что из файла console.logs видно, что значение для тайм-аута равно 1.

Если я сделаю аналогичный запрос с модулем http / http-запроса NativeScript, настройка тайм-аута будет соответствовать ожидаемым.

1 Ответ

0 голосов
/ 09 ноября 2019

Я предполагаю, что это не реализовано в оболочке XHR (начиная с версии 6.2.0), а только в исходном классе HTTP-запроса. Попробуйте добавить приведенный ниже код в app.js.

import { XMLHttpRequest } from 'tns-core-modules/xhr';
import * as types from "tns-core-modules/utils/types";

XMLHttpRequest.prototype.originalSend = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function (data) {
    if (types.isDefined(this._options) && types.isNumber(this.timeout)) {
        this._options.timeout = this.timeout;
    }
    this.originalSend(data);
};

. Возможно, вы захотите отправить вопрос на Github.

...