【问题标题】:Angular 2.0 use new Promise() got error TypeError: promise_1.Promise is not a functionAngular 2.0 使用 new Promise() 得到错误 TypeError: promise_1.Promise is not a function
【发布时间】:2016-02-20 10:25:43
【问题描述】:

在 Angular 2.0 中使用 new Promise 时出错:

TypeError: promise_1.Promise 不是函数

 var promise = new Promise(function (resolve, reject) {

        this.buildCSV();
           .then(accesstoken => {
           this.doClick();
       })
    });

【问题讨论】:

  • 你在哪里使用promise,因为你显然用错了?
  • 代码不起作用。你需要看看这个developer.mozilla.org/en/docs/Web/JavaScript/Reference/…
  • 不完全确定为什么你会得到你声称得到的错误,但无论如何这都是无效的 js ......第 4 行的.then 至少应该给出一个语法错误......并且无论如何,您的代码中都没有解决或拒绝创建的承诺
  • 不要从任何地方导入 Promise。只需使用它,它就在浏览器中。
  • 在 Angular 2.0 中使用,即在打字稿文件中

标签: javascript angular


【解决方案1】:

你应该尝试这样的事情:

var promise = new Promise((resolve, reject) => {          
    this.buildCSV();
});

promise.then(accesstoken => {
    this.doClick();
});

then 方法应该在 promise 的初始化回调中使用。

此外,如果您想在回调中使用 this 关键字,请不要忘记使用箭头函数。

我看不到您在哪里调用解析/拒绝函数。注册的回调不会被调用...你尝试实现什么?

关于您的错误,如果浏览器不支持开箱即用的承诺(大多数情况下存在此对象),您可以尝试导入它:

<script src="../node_modules/es6-shim/es6-shim.js"></script>
<script src="../node_modules/es6-promise/es6-promise.js"></script>

在所有情况下,Promise 对象可以直接使用而无需任何导入...在您的情况下,前缀 promise_1 有点奇怪,我认为您尝试从某些东西导入它。

查看这个问题了解更多详情:

【讨论】:

  • 永远不会调用.then 回调,因为永远不会调用resolvereject。如果this.buildCSV() 返回一个承诺,那么new Promise 根本不需要。
  • 我已经使用了那个,但仍然出现错误 TypeError: promise_1.Promise is not a function
  • 同意!我不清楚用例是什么;-) 请参阅答案的最后一部分...
  • 也许你的浏览器不支持开箱即用的 es6 promise。您是否尝试包含 es6-promise.js 文件?
  • buildCSV() 它包含 api 调用,所以承诺是等到它得到结果并在成功得到结果后执行 doClick()。
猜你喜欢
  • 2017-04-13
  • 2020-03-17
  • 2020-01-06
  • 2021-03-10
  • 2021-09-30
  • 2020-12-22
  • 2019-06-15
  • 2017-07-20
  • 1970-01-01
相关资源
最近更新 更多