特點
function*
可以使用yield返回多次
呼叫方法
使用next()執行generator**,每次遇到yield就返回乙個物件, 如果
done
為true
,則value
就是return的返回值,沒有return就返回undefined,如果return語句後面還有yield,這個generator物件就全部執行完成,不要再繼續呼叫next()
了
直接用for ... of
迴圈迭代generator物件,這種方式不需要我們自己判斷done
for (var x of fib(5))
如果給next方法傳引數, 那麼這個引數將會作為上一次yield語句的返回值
function* foo(x)
var a = foo(5);
a.next() // object
a.next() // object
a.next() // object
var b = foo(5);
b.next() //
b.next(12) //
b.next(13) //
作用
ajax的非同步處理
function* main() ");
console.log(result);
//do 別的ajax請求;
}
模組思路
co 模組的思路就是利用 generator 的這個特性,將非同步操作跟在 yield 後面,當非同步操作完成並返回結果後,再觸發下一次 next() 。當然,跟在 yield 後面的非同步操作需要遵循一定的規範 thunks 和 promises。
function co(gen) );
}function sayhello() );
}co(function *helloworld() );
內建執行器。 generator 函式的執行必須靠執行器,所以才有了 co 函式庫,而 async 函式自帶執行器。也就是說,async 函式的執行,與普通函式一模一樣,只要一行。
更好的語義。 async 和 await,比起星號和 yield,語義更清楚了。async 表示函式裡有非同步操作,await 表示緊跟在後面的表示式需要等待結果。
更廣的適用性。 co 函式庫約定,yield 命令後面只能是 thunk 函式或 promise 物件,而 async 函式的 await 命令後面,可以跟 promise 物件和原始型別的值(數值、字串和布林值,但這時等同於同步操作)。
express
優點:線性邏輯,通過中介軟體形式把業務邏輯細分、簡化,乙個請求進來經過一系列中介軟體處理後再響應給使用者,清晰明了。
缺點:基於 callback 組合業務邏輯,業務邏輯複雜時巢狀過多,異常捕獲困難。
koa優點:首先,借助 co 和 generator,很好地解決了非同步流程控制和異常捕獲問題。其次,koa 把 express 中內建的 router、view 等功能都移除了,使得框架本身更輕量。
缺點:社群相對較小。
time模組和os模組,json模組
import time def month n time.local struct time time.strptime y m 1 y m d print struct time return time.mktime struct time print month 2 ret time.local...
sys模組 和os模組
sys模組 sys.argv 命令列引數list,第乙個元素是程式設計師本事路徑 sys.exit n 退出程式,正常退出時exit 0 sys.version 獲取python解釋程式的版本資訊 sys.maxint 最大的int值 3.0取消 sys.path 返回模組的搜尋路徑,初始化時使用p...
Python os模組和shutil模組
一 python中對檔案 資料夾操作時經常用到的os模組和shutil模組常用方法。1.得到當前工作目錄,即當前python指令碼工作的目錄路徑 os.getcwd 2.返回指定目錄下的所有檔案和目錄名 os.listdir 3.函式用來刪除乙個檔案 os.remove 4.刪除多個目錄 os.re...