Skip to content

bestkwanwa/simple-promise

Repository files navigation

🍰 This is a simple implementation of Promises.

# install packages
pnpm i
# run test
pnpm run test

Promises/A+

Promises/A+

states

  • promise的状态一旦凝固,不再改变
    let p = new Promise((resolve, reject) => {
      resolve('success1')
      reject('error') // 无效
      resolve('success2') // 无效
    })

then方法

  • then方法可以被调用多次
    let p=new Promise()
    p.then()
    p.then()
    p.then()
  • then方法返回promise,且此promise的状态由接收的回调决定
  • then方法接收的回调在上一个promise状态凝固后才调用

处理value

  • resolve接收当前promise,会报TypeError。
  • resolve接收一个promise,会沿用它的state和result。
  • resolve接收一个thenable对象,取它的then方法,作为executor创建promise。

Others

Thenable对象

const thenable={
    then(resolve, reject){
         setTimeout(() => resolve('thenable'), 100);
    }
}
Promise.resolve().
  then(() => thenable).
  then(v => {
    v; // 'thenable'
  });

TODO

  • Promsie.resolve
  • Promise.reject
  • Promise.all
  • Promise.race
  • class style

References

About

🍰 A simple implementation of Promise /A+ Spec.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published