【问题标题】:Getting error TypeError: Promise.any is not a function出现错误 TypeError: Promise.any 不是函数
【发布时间】:2020-11-17 06:31:01
【问题描述】:

我正在从以下站点学习 Promise.any。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/any IDE 没有显示任何错误,但是在使用 yarn 命令运行时,我收到以下错误。

E:\typescript-2020-1\promise-usages-1\lib\basics1\promise-any.service.js:18                                                
        Promise.any([                                                                                                      
                ^                                                                                                                                                                              
TypeError: Promise.any is not a function                                                                                   
    at PromiseAnyService.validateAll_Type1 (E:\typescript-2020-1\promise-usages-1\lib\basics1\promise-any.service.js:18:17)
    at Object.<anonymous> (E:\typescript-2020-1\promise-usages-1\lib\test.js:35:7)                                         
    at Module._compile (internal/modules/cjs/loader.js:1137:30)                                                            
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)                                              
    at Module.load (internal/modules/cjs/loader.js:985:32)                                                                 
    at Function.Module._load (internal/modules/cjs/loader.js:878:14)                                                       
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)                                    
    at internal/main/run_main_module.js:17:47                                                                              
 ERROR  Command failed with exit code 1.      

                                                                         

我已经编写了简单的代码来测试。请帮助我在 Typescript 类中做错了什么。

const promise1 = Promise.reject(0);
const promise2 = new Promise((resolve) => setTimeout(resolve, 100, 'quick'));
const promise3 = new Promise((resolve) => setTimeout(resolve, 500, 'slow'));

const proms = [promise1, promise2, promise3];

Promise.any(proms).then((result) => console.log(result));

目前我正在使用 NodeJs 12 和 Typescript 3.8.3

【问题讨论】:

  • 这个功能在最新的 stable chrome 中尚不可用。使用 chrome canary 版本,它会正常工作
  • 先生,我将其编写为独立程序,
  • 不确定节点,但您的浏览器肯定不会。看来这个确切的功能是非常新的
  • 根据 MDN 页面 - 无。这就是您使用全新功能所获得的。

标签: javascript node.js typescript promise


【解决方案1】:

node.js 15.0.0 支持Promise.any 方法,你的node.js 版本太旧了,可以更新一下再试试。

【讨论】:

    【解决方案2】:

    恕我直言,最好坚持当前设置中支持的任何内容,似乎 esnext.promise 尚不存在,但是:

    我正在从 Bluebird 移植一个相当大的实时代码库,而这个 npm 模块为我做了这件事(我在节点 v12.12.0 上): https://www.npmjs.com/package/promise.any

    【讨论】:

      猜你喜欢
      • 2014-11-18
      • 2018-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-22
      • 1970-01-01
      相关资源
      最近更新 更多