次のように関数をラップするかvar thunkedFunction = function(params) { return function(callback) { originalFunction(params, callback) }; )
、node thunkify ライブラリを使用して、サンクによって Koa で動作するサードパーティの非同期関数を取得しました。
ただし、ntwitter のストリームでこれを試すと、次のようになります。
var streamThunk = thunkify(tw.stream);
var stream = yield streamThunk("statuses/filter", {track: track});
次のエラーが表示されます:「未定義のプロパティ stream_base を読み取れません」。
ntwitter (node-twitter 上に構築) をさらに掘り下げると、Twitter.prototype.stream 関数が this.options.stream_base を呼び出していることがわかります。また、this.options は、通常呼び出すと定義されます。つまりtw.stream(function(stream) {...});
、関数をサンクすると未定義になります。サンク時に関数がスコープを失う理由はありますか?これを回避する方法はありますか?