我想獲得一個類似的功能如下:回調爲對象屬性
function foo(before, after){
before();
setTimeout(function(){
after();
},100)
}
foo(function(){
console.log('before');
}, function(){
console.log('after');
});
當返回一個對象,而不是使用回調(僞代碼):
var foo = function() {
before();
setTimeout(function(){
after();
},100)
return {
before: before,
after: after
}
};
foo().before(function(){
console.log('before');
});
foo().after(function(){
console.log('after');
});
或者甚至
foo().before(function(){
console.log('before');
}).after(function(){
console.log('after');
});
這可能嗎?
謝謝。我已經在使用它了。但我試圖擴展它,這樣我也可以獲得「之前」功能。因爲AFAIK,沒有。 – Johan
是的,在功能之前添加是很棘手的。延遲的美妙之處在於,即使延遲解決後,您仍然可以傳遞它們並添加回調,並添加回調函數,這些回調函數在解析後解析之前應該運行,這很棘手......您的用例是什麼樣的? – Douglas
我只是玩了一下,但http://jsfiddle.net/zfqJ8/53/而不是公開承諾,我的想法是公開承諾的一部分+一些自定義方法,例如「之前」。 – Johan