【问题标题】:Axios with promise.prototype.finally doesn't work带有 promise.prototype.finally 的 Axios 不起作用
【发布时间】:2017-02-03 09:27:24
【问题描述】:

不知道我错过了什么。按照此处的说明进行操作:https://github.com/mzabriskie/axios/blob/master/COOKBOOK.md

我已经 npm 安装了 axios 和 npm install axios promise.prototype.finally --save

我正在使用 Gulp 和 Browserify。

var axios = require('axios');
require('promise.prototype.finally');

axios.get('http://google.com').finally(function(){
    console.log('test');
});

错误:

app-7ee90adab7.js:18780 Uncaught TypeError: axios.get(...).finally is not a function

更新: 这使它工作,但我需要这样做吗?

var promiseFinally = require('promise.prototype.finally');
promiseFinally.shim();

【问题讨论】:

  • axios 是使用原生 Promise 还是它自己的实现?试试Promise.resolve(axios.get(…)).finally(…)

标签: javascript promise axios


【解决方案1】:

尝试其中一种,看看是否有效:

  1. 看看你是否有一个全局的 Promise 可以用来填充它?在 browserify 运行捆绑包时,在 chrome 控制台中输入 Promise。如果没有,请使用 Babel 或使 es6 或仅 Promise 可用的库。

  2. 如果由于某种原因它不能正常工作... 那么 axios cookbook.md 没有做对,因为您必须调用 shim() 才能将其应用到 Promise proto 上。如果你不喜欢这样,为什么不使用简写require('promise.prototype.finally').shim();,否则你必须require('es6-shim');

【讨论】:

  • 1. Promise 确实返回 function Promise() { [native code] } 但 browserify 用于 gulp 任务。我不确定你的意思是浏览器中的browserify。 2. 我选择了速记。
  • 嗯,这似乎对我不起作用。我已经安装了promise.prototype.finally 并在上面的答案中使用了简写,但得到了错误Property 'finally' does not exist on type Promise<void>
【解决方案2】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 2020-07-29
    • 2018-12-24
    • 1970-01-01
    • 1970-01-01
    • 2016-06-16
    • 2018-05-20
    相关资源
    最近更新 更多