cho45 / jsdeferred

Asynchronous library in JavaScript. Standalone and Compact.
http://cho45.stfuawsc.com/jsdeferred/
332 stars 48 forks source link

callを複数引数で呼べるようにしました。 #5

Closed swdyh closed 13 years ago

swdyh commented 13 years ago
var d = new Deferred()
d.next(function(a, b) {
    console.log(a, b)
})
d.call(1,2)

var fs = require('fs')
function dStat(path) {
    var d = new Deferred()
    fs.stat(path, function(err, data) {
        d.call(err, data)
    })
    return d
}
dStat('d.js').next(function(err, stat) {
    console.log(err, stat)
})
cho45 commented 13 years ago

コアの部分をできるだけシンプルにしたいのでとりあえず保留しています。 必要なときだけ専用の関数を定義することでできないこともないので、とりあえずそうしてほしいかなあと思います。

        var d = new Deferred().next(function (args) {
            var next = this._next.callback.ok;
            this._next.callback.ok = function () {
                return next.apply(this, args.args);
            };
        });
swdyh commented 13 years ago

たぶんDeferred.connectの方法ですよね。 そっちのdeferredが複数引数がいけるようになってることに違和感があって、 しかもそのときはその引数の受け渡しがおかしかったのもあって、 そもそもふつうのdeferredがそうなってれば済むんじゃないのかなと思ってパッチを書いてみました。 でもコアを小さくというのも分かるし、connectの引数の処理も修正されたのでconnectを使っていこうと思います。