手寫簡易版Promise

2022-09-06 08:36:08 字數 867 閱讀 1260

在完成符合 promise/a+ 規範的**之前,我們可以先來實現乙個簡易版promise,因為在面試中,如果你能實現出乙個簡易版的promise基本可以過關了。

那麼我們先來搭建構建函式的大體框架

const pending = 'pending'const resolved = 'resolved'const rejected = 'rejected'

function

mypromise(fn)

接下來我們來完善resolvereject函式,新增在mypromise函式體內部

function

resolve(value)

}function

reject(value)

}

這兩個函式**類似,就一起解析了

完成以上兩個函式以後,我們就該實現如何執行promise中傳入的函式了

try

catch

(e)

最後我們來實現較為複雜的then函式

mypromise.prototype.then = function

(onfulfilled, onrejected)

if (that.state ===pending)

if (that.state ===resolved)

if (that.state ===rejected)

}

以上就是簡單版promise實現

簡易版promise原始碼實現

首先我們先看一下promise是如何使用的 通過promise構建出來的物件有三種狀態,pending 進行中 fulfilled 已成功 rejected 已失敗 狀態只能由 pending 變為 fulfilled 或由 pending 變為 rejected 且狀態改變之後不會在發生變化,會一...

前端手寫系列 手寫簡易版深拷貝

深拷貝方式1 json.parse json.stringify obj 這種方式有很多缺點,會忽略undefined,symbol,函式,不能解決迴圈引用的問題,不能處理正則,new date 以下深拷貝只考慮了物件和陣列的情況,其餘諸如date,function,regexp都沒有考慮 簡易版深...

檔案上傳簡易版

以下是index.jsp的核心 後台servlet核心 先獲取所接收檔案要儲存的路徑 string path getservletcontext getrealpath imgs 檔案上傳需要臨時目錄 如果不指定,那麼該目錄就是tomcat temp file tempdir new file d ...