Node.js 如何拒绝超时时的解析承诺?

Node.js 如何拒绝超时时的解析承诺?,node.js,typescript,es6-promise,Node.js,Typescript,Es6 Promise,我有一个承诺需要拒绝,因为这个决定需要太长时间。在我的代码中,我试图使用超时来拒绝承诺。我遵循了的示例,但无法获得在超时后拒绝的承诺 /* I added setTimeout 10 seconds to the package to give it a delay */ const package = require('package'); const promiseTimeout = function(ms, promise){ // Create a promise that rej

我有一个承诺需要拒绝,因为这个决定需要太长时间。在我的代码中,我试图使用超时来拒绝承诺。我遵循了的示例,但无法获得在超时后拒绝的承诺

/* I added setTimeout 10 seconds to the package to give it a delay */
const package = require('package');

const promiseTimeout = function(ms, promise){
  // Create a promise that rejects in <ms> milliseconds
  let timeout = new Promise((resolve, reject) => {
    let id = setTimeout(() => {
    clearTimeout(id);
    console.log("timeout finished at " + ms + "ms but promise won't reject");
    reject('Timed out in '+ ms + 'ms. - Reject Message')
    }, ms)
  })

  // Returns a race between our timeout and the passed in promise
  return Promise.race([
    promise,
    timeout
  ])
}

const prolongedPromise = function(){
    return new Promise((resolve, reject) => {
        package.asyncFunction(function(data) {
          resolve(data) /* Takes 10 seconds to resolve */
        })
    })
};

/* Attempting to race promises to get reject to execute on timeout */
let promiseRace = promiseTimeout(2000, prolongedPromise());
promiseRace.then(response => {
    resolve(response); /* Always resolves even after timeout is executed */
}, error => {
    reject(error);
}).catch(error => {
    reject(error);
})
/*我在包中添加了setTimeout 10秒,以给它一个延迟*/
const package=require('package');
const promiseTimeout=函数(毫秒,承诺){
//创建以毫秒为单位拒绝的承诺
让超时=新承诺((解决、拒绝)=>{
let id=setTimeout(()=>{
清除超时(id);
log(“超时在“+ms+”ms完成,但承诺不会拒绝”);
拒绝(“+ms+”ms.-拒绝消息”中超时)
},ms)
})
//返回超时和传入承诺之间的竞争
回报,回报([
承诺,,
超时
])
}
const extendedPromise=函数(){
返回新承诺((解决、拒绝)=>{
package.asyncFunction(函数(数据){
解析(数据)/*解析需要10秒*/
})
})
};
/*尝试竞争承诺在超时时执行拒绝*/
让promiseRace=promiseTimeout(2000,extendedPromise());
promiseRace.then(响应=>{
resolve(response);/*即使在执行超时后也始终解析*/
},错误=>{
拒绝(错误);
}).catch(错误=>{
拒绝(错误);
})
我不确定,但可能承诺已经在解决(10秒超时),这将不允许拒绝执行

很难展示完整的环境,因为我必须遵循软件包的API来获取数据。如果有人想全面了解这个问题,我就准备了一个10秒等待asyc函数

我怎样才能得到拒绝超时的承诺