1
比方說,我有處理錯誤時需要原來的參數如下同步代碼:如何將最後一個值傳遞給錯誤處理程序?
var input = createInput(123);
try {
doWork(input);
} catch (err) {
handleError(input, err); // error handling requires input
}
什麼是原來的參數傳遞給錯誤處理程序的最佳方式?
Rx.Observable.just(123).map(createInput).map(doWork).subscribe(
function(result) {
// success
},
function(err) {
// how can I get the argument of doWork (the result of createInput) here?
}
);
它看起來像我在我的問題中蒸餾了太多的例子。實際上'doWork'是異步的,即'Rx.Observable.fromNodeCallback(doWork)'。我最終封裝了'doWork'來增加原始輸入的錯誤。它的工作原理,但我希望有一些流「魔術」,避免包裝異步呼叫。 –
是的,這沒有Rx魔術。這實際上只是基本的異常邏輯。你可以做的最好的「Rx」魔法就是在map操作之前插入一個'.do(function(v){someVariableInScope = v;})'子句,然後在你的錯誤處理函數中訪問這個變量。但那是相當邪惡的。 – Brandon