20行实现一个Promise
作者:晨曦时梦见兮 来源: 掘金 前言 在面试的时候,经常会有面试官让你实现一个Promise,如果参照A+规范来实现的话,可能面到天黑都结束不了。 说到Promise,我们首先想到的最核心的功能就是异步链式调用,本篇文章就带你用20行代码实现一个可以异步链式调用的Promise。 这个Promise的实现不考虑任何异常情况,只考虑代码最简短,从而便于读者理解核心的异步链式调用原理。 代码 先给代码吧,真就20行。 function Promise ( excutor ) { var self = this self.onResolvedCallback = [] function resolve ( value ) { setTimeout( () => { self.data = value self.onResolvedCallback.forEach( callback => callback(value)) }) } excutor(resolve.bind(self)) } Promise .prototype.then = function ( onResolved ) { var self = this return new Promise ( resolve => { self.onResolvedCallback.push( function () { var