首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何拦截应答器中的应答器?

如何拦截应答器中的应答器?
EN

Stack Overflow用户
提问于 2017-08-15 20:09:24
回答 2查看 1.4K关注 0票数 2

我试图拦截所有的承诺,然后方法的反应。但是,我无法在原型中得到响应数据,然后才是方法。请找到下面的代码。

代码语言:javascript
运行
复制
(function(Promise) {
   var originalThen = Promise.prototype.then;
   var originalCatch = Promise.prototype.catch;
   Promise.prototype.then = function() {
      console.log(this, arguments);
      return originalThen.apply(this, arguments);
   };
   Promise.prototype.catch = function() {
      return originalCatch.apply(this, arguments);
   };
})(this.Promise)

在上面的代码中,我可以看到在所有承诺调用中打印的控制台。但是,我不能得到响应对象在当时。

控制台中打印的“this”对象值:

‘the’prototype方法中打印的参数:

请建议我在所有承诺方法的方法中得到响应对象。

我尝试使用"arguments.arguments“(然后回调中的响应对象).But来获取值,它引发了下面的错误

Uncaught:“调用者”和“参数”是受限制的函数属性,不能在此上下文中访问。

请建议我拦截响应对象的解决方案。

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-08-15 20:34:32

then是一种注册成功和失败回调的同步方法。它马上就会回来。

若要拦截未来值,请插入自己以代替成功回调:

代码语言:javascript
运行
复制
(function(Promise) {
   var originalThen = Promise.prototype.then;
   Promise.prototype.then = function(onFulfilled, onFailure) {
      return originalThen.call(this, function(value) {
        console.log(value);
        return onFulfilled(value);
      }, onFailure);
   };
})(this.Promise);

Promise.resolve(3).then(() => console.log("Done"));

票数 3
EN

Stack Overflow用户

发布于 2017-08-15 20:12:22

在使用要添加回调的承诺时,在承诺实际具有值之前调用then()

它的参数是成功和错误回调。

要查看承诺的值,需要实际调用then()并传递回调以查看其最终值。(或者包装被传递的回调并将包装器传递给真正的then())

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45700756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档