javascript - 监听 Promise 何时在执行器函数内解析

标签 javascript node.js es6-promise

  return new Promise(function(resolve, reject {
      const to = setTimeout(function(){

      });
  });

想象一下,我想确保从执行器函数内部清理资源。

我想做这样的事情:

  return new Promise(function(resolve, reject {
      const to = setTimeout(function(){

      });
      this.finally(function(){
        clearTimeout(to);
      });
  });

但是 this 在 Promise 执行器函数中不可用。 有没有办法清理 promise 执行器中的异步资源?

我想你可以在调用解析/拒绝之前清理它们,但在某些情况下这会更困难。

最佳答案

不确定您是否需要在触发后清除超时,但您可以尝试以下操作:

var someTest = () => {
  var t;
  var p = new Promise(
    (resole)=>{
      t = setTimeout(resole,2000)
    }
  );
  p.finally(
    ()=>console.log(t,clearTimeout(t))
  )
  return p;
}
someTest();

或者您可以尝试以下操作:

var someTest = () =>
  new Promise(
    (resole)=>{
      t = setTimeout(resole,2000)
    }
  ).then(
    result=>{
      //clean up
      return result
    },
    error=>{
      //clean up
      return Promise.reject(error)
    }
  );

关于javascript - 监听 Promise 何时在执行器函数内解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50067357/

相关文章:

javascript - 在 html 中使用外部 javascript [基本内容]

javascript - HTML & Js 颜色选择器 : What am I doing wrong?

javascript - 书架nodeJS如何选择LIMIT mysql

javascript - JavaScript 中的 Promise 问题

javascript - 正则表达式:我只想匹配末尾没有点的单词

javascript - 恩伯斯 : how to display loading spinner and notification messages on model operations

javascript - Node Js Transformation JSON by JSON key

node.js - 适用于 Facebook Messenger 的 Microsoft Bot Framework 附件

javascript - Spotify API 对 api/ token 授权的错误请求错误 : 400

javascript - 如何将异步函数映射到列表上?