Simon Logo
WritingMonthlyProjects
Simon Logo

Thanks for reading!

CC BY-NC-SA 4.0© 2019-2026 Simon Wong.

Contact

GitHubGithubXTwitterZhihu知乎WeChat微信公众号RSSRSS

Legal

隐私策略服务条款
CC BY-NC-SA 4.0© 2019-2026 Simon Wong.

On this page

On this page

WebComponentsJavaScriptNext.jsAI

#11 前端月刊

Jun 30, 2024

JavaScript

了解 Promise.withResolvers()

Promise.withResolvers() 是一个更加优雅的创建 Promise 的新方法,目前处于 stage 4。

回想一下,如果我们将一个基于回调的同步函数改造为异步函数 需要怎么写。

js
const somethingSync = () => {
  return new Promise((resolve, reject) => {
    somethingCallBack((err, val) => {
      if (err) {
        reject(err)
        return
      }
      resolve(val)
    })
  })
}

使用 Promise.withResolvers() 之后可以更加的简便。

js
const somethingSync = () => {
  const { promise, resolve, reject } = Promise.withResolvers();
  somethingCallBack((err, val) => {
    if (err) {
      reject(err)
      return
    }
    resolve(val)
  })
  return promise
}

他的实现也很简单:

js
function promiseWithResolvers() {
  let resolve;
  let reject;
  const promise = new Promise(
    (res, rej) => {
      // Executed synchronously!
      resolve = res;
      reject = rej;
    });
  return {promise, resolve, reject};
}

State Of JS 2023

State of js 2023 终于出炉了,JS 的发展速度依旧没有减缓,做第一个吃螃蟹的人,不停学习新技术,走在新技术最前沿。

优化超长的布尔值判断

我们业务代码经常会碰到 if ((a || b) && (c || d) && e) 类似这样的值判断。我们如何考虑优化它,使得可维护性提高。

如何编写带有多个参数的 JS 函数

这其实是一片函数式编程的技巧,将多个参数函数拆分成单一参数的函数,利用组合(compose)、柯里化(curring)等等技巧优化函数,并可以在自定义 hook 场景中应用。还提供了一些 utility functions 帮助上述的实现。

这种复杂函数式编程很令人着迷。

React

React 内存泄漏:useCallback 和闭包如何对你造成影响

当我们使用 useCallback + 闭包 + 大对象,有可能会导致内存泄漏。文章详细的讲述了闭包产生的过程。

当然我们也可以通过一些方式去避免它。

JS Runtime

Nodejs 2024 LTS 版本流行的 10 个功能

介绍了 test 模块、mock 模块、测试覆盖率、watch 模式、corepack、env 加载、import.meta.file、timers promise、权限模块、策略模块 10 个现代的功能。现代的 nodejs 可以不再需要使用 jest、nodeman 等等库,原生就支持这些功能。

其他

理解 Docker 镜像分层

这是一个非常浅显易懂的讲解镜像分层是如何实现的,通过分层,我们可以利用缓存加快构建速度。

开发人员必须了解的关于 Unicode 的最低限度知识

对于以前的开发者来说,不知道使用什么编码的情况下使用字符串是可能出现问题的,而在现在,几乎可以确定的是在用 UTF-8,这是一篇入门 Unicode、深入了解 UTF-8 的好文章。

Previous

前端月刊

Next

前端月刊

You Might Also Like

  • 前端月刊Jun 30, 2024
  • AI 与前端月刊Jan 31, 2026
  • 前端与 AI 月刊Apr 30, 2025