Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
这个TypeScript代码段中发生了什么?_Typescript - Fatal编程技术网

这个TypeScript代码段中发生了什么?

这个TypeScript代码段中发生了什么?,typescript,Typescript,我对TypeScript相当陌生,但使用过JavaScript。我学习打字是为了使用Angular 2。在我的一个教程中,我遇到了以下代码 return new Promise(resolve => { // Simulate server latency with 2 second delay setTimeout(() => resolve(this.getHeroes()), 2000); }); 我只读了一点关于Promise类的内容,但它似乎包含一个resolve

我对TypeScript相当陌生,但使用过JavaScript。我学习打字是为了使用Angular 2。在我的一个教程中,我遇到了以下代码

return new Promise(resolve => {
  // Simulate server latency with 2 second delay
  setTimeout(() => resolve(this.getHeroes()), 2000);
});
我只读了一点关于Promise类的内容,但它似乎包含一个resolve方法。所以,我试图找出上面代码片段中实际发生的事情的数据流。Promise类是用包含方法的resolve变量的参数实例化的?我想我有点困惑,因为代码中的第二个解析词。如果这是Promise类的同一个解析,那么在Promise对象被实例化之前,它是如何被调用的呢。除非resolve是一种静态方法

基本上,我想弄清楚返回语句中到底发生了什么


马哈洛,提前

承诺对象构造函数接受两个参数:

  • resolve
    :当希望承诺发出其工作结果时应调用的方法(例如:从HTTP调用返回数据)

  • 拒绝
    :当希望承诺发出错误时应调用的方法

这两个论点与承诺的两种结局相匹配。您给出的代码片段忽略了第二个参数,因此此承诺不会发出错误。让我们更仔细地看一下我们现有的:

setTimeout(() => resolve(this.getHeroes()), 2000);
setTimeout
接受两个参数

  • 回调
    :将来要执行的函数

  • 延迟
    :执行前等待多长时间

在您的情况下,2000毫秒后,将执行解析(this.getHeroes())。这是一个没有参数的函数,其主体只有一行代码:

resolve(this.getHeroes())
因此,基本上,在2秒钟内,promise将通过发出
getHeroes()
方法的结果来解决。无论哪种代码调用了返回承诺的函数,都将在那时获得英雄。在下面的示例中,
someFunction
是实际具有
返回新承诺(…)
的函数,
result
getHeroes()的输出


你好这不应该用
angular
angular2服务
标记,因为qeustion也不直接涉及。Promise构造函数将函数作为参数。在这种情况下,该函数接受一个名为resolve的参数。括号中的部分是该功能的实现。在TypeScript中查找向上箭头函数以了解更多信息。
someFunction().then(result => this.heroes = result)