cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk meningkatkan tamat masa untuk permintaan axios?

Saya agak baru dalam JavaScript/TypeScript (masih belajar) dan telah cuba membuat permintaan menggunakan fetch dan axios tetapi menghadapi masalah sambungan rangkaian. Ralat yang saya terima ialah:

cause: AggregateError
      at internalConnectMultiple (node:net:1102:18)
      at internalConnectMultiple (node:net:1161:5)
      at Timeout.internalConnectMultipleTimeout (node:net:1644:3)
      at listOnTimeout (node:internal/timers:575:11)
      at process.processTimers (node:internal/timers:514:7) {
    code: 'ENETUNREACH',
    [errors]: [
      Error: connect ENETUNREACH 2001:67c:4e8:f004::9:443 - Local (undefined:undefined)
          at internalConnectMultiple (node:net:1160:40)
          at Timeout.internalConnectMultipleTimeout (node:net:1644:3)
          at listOnTimeout (node:internal/timers:575:11)
          at process.processTimers (node:internal/timers:514:7) {
        errno: -101,
        code: 'ENETUNREACH',
        syscall: 'connect',
        address: '2001:67c:4e8:f004::9',
        port: 443
      }
    ]
  }
}

Node.js v20.3.1

Saya rasa kod itu tidak perlu, gunakan sahaja axios({"url": "https://example.com"}).

Kelajuan rangkaian adalah perlahan dan tidak stabil, tetapi saya boleh mengakses internet. Permintaan ini berfungsi dengan baik dengan utiliti lain seperti curl atau permintaan dalam Python (cuba menggunakan kedua-duanya), supaya menolak sebarang masalah dengan konfigurasi komputer atau rangkaian saya.

fetch dan axios kedua-duanya sebenarnya berfungsi, tetapi saya terpaksa terus mencuba semula (sehingga 200 kali) sehingga ia memutuskan untuk berfungsi. Saya cuba menghantar { timeout: 0 }{ timeout: 5000 } kepada pembina axios tetapi tidak berjaya.

Saya juga mencuba ini tetapi nampaknya tiada kesan:

const source = CancelToken.source();
const timeout = setTimeout(() => {
  source.cancel();
}, 10000);

axios.get(ip + '/config', {cancelToken: source.token}).then((result) => {
  clearTimeout(timeout);
  // ...
});
axios.get('/foo/bar', {
   signal: AbortSignal.timeout(5000) //Aborts request after 5 seconds
}).then(function(response) {
   // ...
});

P粉293550575P粉293550575453 hari yang lalu635

membalas semua(1)saya akan balas

  • P粉814160988

    P粉8141609882023-09-07 10:18:52

    Anda boleh menggunakan salah satu pilihan konfigurasi timeout 属性作为可传递给 axios.

    https://axios-http.com/docs/req_config

    Anda juga boleh menukar nilai lalainya dan bukannya menggunakan atribut timeout setiap kali:

    const instance = axios.create();
    instance.defaults.timeout = 2500;

    https://axios-http.com/docs/config_defaults

    balas
    0
  • Batalbalas