/**
* 提取slice()函式方便使用
*/var slice = array.prototype.slice;
/** * 暴露 `co`.
*/module.exports = co['default'] = co.co = co;
/** * 把generator函式 `fn` 包起來,返回promise
* this is a separate function so that
* every `co()` call doesn't create a new,
* unnecessary closure.
* * @param fn
* @return
* @api public
*/co.wrap = function (fn)
};/**
* 執行不帶引數的generator函式,返回promise
* * @param fn
* @return
* @api public
*/function co(gen)
*/function onfulfilled(res) catch (e)
next(ret);
return null;
}/**
* 自己捕獲err
* 注意,這裡是呼叫generator遍歷器上的throw方法
* 乙個generator執行出錯後就不再執行,返回,故這裡呼叫next函式會在第乙個if結束
*/function onrejected(err) catch (e)
next(ret);
}/**
* 首先檢查是否結束
* 沒有結束就把結果value轉化為promise型別
* 轉化成功就執行promise,這裡是被onfulfilled呼叫,現在又反過去呼叫onfulfilled,形成遞迴。
* 失敗就呼叫onrejected函式
*/function next(ret)
});}/**
* convert a `yield`ed value into a promise.
* * @param obj
* @return
* @api private
*/function topromise(obj)
/** * convert a thunk to a promise.
* * @param
* @return
* @api private
*/function thunktopromise(fn) );
});}/**
* convert an array of "yieldables" to a promise.
* uses `promise.all()` internally.
* * @param obj
* @return
* @api private
*/function arraytopromise(obj)
/** * convert an object of "yieldables" to a promise.
* uses `promise.all()` internally.
* * @param obj
* @return
* @api private
*/function objecttopromise(obj)
return promise.all(promises).then(function () );
function defer(promise, key) ));
}}/** * check if `obj` is a promise.
* * @param obj
* @return
* @api private
*/function ispromise(obj)
/** * check if `obj` is a generator.
* * @param obj
* @return
* @api private
*/function isgenerator(obj)
/** * check if `obj` is a generator function.
* * @param obj
* @return
* @api private
*/ function isgeneratorfunction(obj)
/** * check for plain object.
* * @param val
* @return
* @api private
*/function isobject(val)
openTLD 原始碼解讀
首先是run tld 在其次就是tldexample 最後到了初始化函式tldinit 第乙個比較關鍵的函式 bb scan 將影象網格化,將首先 scale 1.2.10 10 21 個規格 在每個規格上打網格 這個函式有乙個比較重要的方法 ntuples 就是重複 因為網格上的點很多點有相同的x...
thinkphp原始碼解讀
thinkphp原始碼解讀 thinkphp原始碼的根目錄下是 index.php,是系統預設的 主頁,index.php中首先檢測的是 php執行環境,如果php版本小於 5.3.0則退出執行,定義是否為除錯模式,定義應用目錄,引入入口檔案。thinkphp是整個框架的入口檔案,在thinkphp...
HashMap原始碼解讀
一 建立乙個hashmap都做了哪些工作?mapmap new hashmap hahmap無參構造方法 public hashmap 可以看到設定了載入因子 預設0.75 閾值 預設容量16 預設載入因子0.75 12 table是hashmap內部資料儲存結構entry陣列。當hashmap的s...