es6 --- Thunkify源码分析
生活随笔
收集整理的這篇文章主要介紹了
es6 --- Thunkify源码分析
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
首先看一個例子:讀取package.json下的文件,并將讀取的數(shù)據(jù)(若讀取失敗)打印出來
// 導(dǎo)入fs和thunkify模塊 var thunkify = require('thunkify'); var fs = require('fs');// 定義讀取文件的函數(shù)read var read = thunkify(fs.readFile);// 調(diào)用read函數(shù)讀取package.json下的文件.并對數(shù)據(jù)進行處理 read('pacage.json')(function(err, str) {console.log(err);console.log(str); }以上是以同步方式書寫的,異步讀取文件并,對文件信息進行處理的操作…
下面是thinkify的源碼,閱讀一下就好…
function thunkify(fn) {return function() {// 傳入的參數(shù),放在數(shù)組args中var args = new Array(arguments.length);// 保存環(huán)境.放在ctx中var ctx = this;for (var i = 0; i < args.length; ++i) {args[i] = arguments[i];}return function (done) {var called;args.push(function () {if (called) return;called = true;done.apply(null, arguments);});try {fn.apply(ctx, args);} catch (err) {done(err);}}} };看個實例:
function f(a, b, callback) {var sum = a + b;callback(sum);callback(sum); }var ft = thunkify(f); var print = console.log.bind(console); ft(1, 2)(print);函數(shù)本質(zhì)上是對數(shù)據(jù)的處理,因此分析函數(shù)的一個比較好的方法是把參數(shù)都打出來,然后找到其中的聯(lián)系…
下面將幾個關(guān)鍵的數(shù)據(jù)打印到控制臺,
參考《ES6標準入門》(第3版)P364~P365
總結(jié)
以上是生活随笔為你收集整理的es6 --- Thunkify源码分析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3583. 整数分组
- 下一篇: UML在线画图工具ProcessOn