首页 > 其他分享 >记一次失败的StackOverflow回答

记一次失败的StackOverflow回答

时间:2023-02-11 19:22:05浏览次数:58  
标签:features fetchFeatures 回答 prom 失败 StackOverflow Promise featuresInstance Feature

有一位同学在StackOverflow上提问,他想创建一个 Future 类,异步的实现 Future 的构造,当构造完成之后自动调用 .then 方法,执行后面的逻辑

class Features {
  features = null
  constructor(){
    fetchFeatures()
  }
  async fetchFeatures() {
    this.features = await fetch('https://api.github.com/'))
  }
}

const featuresInstance = new Features();
featuresInstance.then((res) => console.log(featuresInstance.features));

我第一眼想到的是继承 Promise 但是继承 Promise 是行不通的,具体请看 这里
简单来说就是 Promise 的运行需要运行时提供魔法,不能简单的通过 super 构造函数传参来执行,另外即便可以传参,也无法使用this,起不到题主要求的封装的效果

首先说明题主的需求是一个伪需求,异步加载资源可以通过Promise来实现,没必要封装到构造函数里

下面给出题主要求的伪需求的实现方式

class Features {
  features = null
  #prom = null
  constructor(){
    return Object.assign(this,this.#prom = new Promise(this.fetchFeatures.bind(this)))
  }
  then(callback) {
    return this.#prom.then(callback)
  }
  async fetchFeatures(resolve) {
    resolve(this.features = await fetch('https://api.github.com/'))
  }
}

const featuresInstance = new Features();
featuresInstance.then((res) => console.log(featuresInstance));

运行结果为
image
可以说是非常完美的实现了需求,但是为什么说是一次失败的尝试呢?


因为题主把问题删了!!

标签:features,fetchFeatures,回答,prom,失败,StackOverflow,Promise,featuresInstance,Feature
From: https://www.cnblogs.com/dou-fu-gan/p/17112393.html

相关文章

  • 关于 TCP 三次握手和四次挥手,满分回答在此
    在面试中,计算机网络的TCP三次握手和四次挥手是很常见的问题,但是在实际面试中,面试官会更愿意听到怎样的回答呢?详细程度是怎样的?越简单常见的问题越不可小觑,万丈高楼平地......
  • Ubuntu之切换root用户提示认证失败
    出现认证失败(Authenticationfailure)的原因有两种,要么是密码输入错误,要么是新安装的系统还没有给root设置密码,,如果是后者,可以通过命令sudopasswdroot进行密码设置,进入roo......
  • 【AGC】认证服务验证用户凭据失败问题
    ​问题背景:为了识别用户身份,开发者可以通过认证服务的ServerSDK验证已经颁发的用户凭据并且检查用户凭据是否已经撤销,可是在客户端认证成功后,使用文档中的代码进行验证时......
  • 软考报名实名认证提提示“注册验证失败,请检查输入信息”的解决办法。
    可能是身份信息不统一或者过期造成的。按下步骤操作:1.应用市场下载CTID,手机注册登陆,新增一张网证需要手机验证且手机需要有NFC功能。手机打开NFC功能,把身份证放到NFC处(......
  • vivado的时序约束失败问题总结
    在vivado综合布线后,会有时序报告,时序约束问题有两种:1.跨时钟详细见https://blog.csdn.net/wordwarwordwar/article/details/77434520这种情况占大部分时序约束问题,信号......
  • celery僵死导致jumpserver提示 连接WebSocket失败
    celery僵死导致jumpserver提示连接WebSocket失败Celery的任务监控位于堡垒机”作业中心“下的”任务监控“中,点击打开新的页面如下图所示刷新页面这里的status状态一......
  • 谷歌chrome安装失败提示错误代码0x80070057解决方法
    谷歌chrome安装失败提示错误代码0x80070057解决方法原标题:"谷歌chrome安装失败提示错误代码0x80070057怎么办"相关电脑问题教程分享。-来源:65路由网。在安装谷歌......
  • Dart 运行测试失败 Failed to load xxx: Does not exist
    背景今天写dart,运行测试的时候突然报了个错解决它花了最少半个小时,真坑爹啊!解决方法找到你项目里的pubspec.lock,把test的版本改为1.22.1然后运行dartpubget就可以了......
  • 磁盘空间不足导致ftp文件上传失败
    今天用ftp准备将相应文件上传至服务器中,但是却无法上传,也没有什么报错语言,就是一个failed。换给软件上传也没用,报同样的错误。 后来发现,是服务器根目录磁盘空间不足,显示......
  • Vue界面渲染函数互相条用导致渲染失败的总结
    先说问题:界面上有一块区域是这样的  数据是取自一个map集合,后面的符号和过滤条件是按照对应的顺序去拿,没有直接关联,请求是按照顺序发的,但是渲染的界面有可能乱序像......