W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
將Node.js樣式的回調API轉換為返回Observable的函數。
bindNodeCallback<T>(callbackFunc: Function, resultSelector: Function | SchedulerLike, scheduler?: SchedulerLike): (...args: any[]) => Observable<T>
callbackFunc | 類型:Function 。 |
---|---|
resultSelector | 類型:Function | SchedulerLike 。 |
調度器 | 可選的。默認值為undefined 。用于調度回調的調度程序。 |
(...args: any[]) => Observable<T>
:返回Observable的函數,該函數傳遞與Node.js回調傳遞的值相同的值。
就像 bindCallback
,但是回調應該是 type callback(error, result)
。
bindNodeCallback
不是運算符,因為其輸入和輸出都不是可觀察的。輸入是 func
帶有某些參數的函數,但最后一個參數必須 func
是完成后調用的回調函數?;卣{函數應遵循 Node.js 約定,其中回調的第一個參數是錯誤對象,表示調用是否成功。如果將該對象傳遞給回調,則表示出了點問題。
輸出的 bindNodeCallback
是 func
與最后一個參數(回調)相同的,與相同的參數的函數。當使用參數調用輸出函數時,它將返回一個 Observable。如果 func
使用錯誤參數調用其回調,則 Observable 也將使用該值發(fā)生錯誤。如果未傳遞錯誤參數,則 Observable 將發(fā)出第二個參數。如果有更多參數(第三個,依此類推), Observable 將發(fā)出一個數組,其中包含除第一個錯誤參數以外的所有參數。
請注意, func
不會同時調用輸出函數,而是在訂閱結果 Observable 時調用。默認情況下,對的調用 func
將在訂閱后同步發(fā)生,但是可以通過將其 scheduler
作為可選的第三個參數適當提供來進行更改。SchedulerLike
還可以控制 Observable 何時發(fā)出回調中的值。要了解更多信息,請查閱的文檔 bindCallback
,其 SchedulerLike
工作原理完全相同。
與中一樣 bindCallback
,this
輸入函數的上下文(屬性)在被調用時將被設置為返回函數的上下文。
Observable 發(fā)出值后,它將立即完成。這意味著即使 func
調用再次回調,來自第二次和連續(xù)調用的值也將永遠不會出現在流中。如果您需要處理多次調用回調的函數,請簽出 fromEvent
或 fromEventPattern
代替。
請注意,它 bindNodeCallback
也可以在非 Node.js 環(huán)境中使用。“ Node.js樣式”回調只是一個約定,因此,如果您是為瀏覽器或任何其他環(huán)境編寫的,并且您使用的 API 實現了該回調樣式,那么 bindNodeCallback
也可以在該 API 函數上安全地使用它。
請記住,傳遞給回調的 Error 對象不必是 JavaScript 內置 Error
對象的實例。實際上,它甚至不需要對象。當回調函數的錯誤參數的值為真時,將其解釋為“存在”。例如,它可以是非零數字,非空字符串或 boolean true
。在所有這些情況下,所得的 Observable 均會因該值而出錯。這意味著通常的常規(guī)樣式回調在 bindNodeCallback
使用時會經常失敗 。如果您的 Observable 錯誤發(fā)生的次數比您預期的要多得多,請檢查是否確實以 Node.js 樣式調用了回調,如果不是,則切換為 bindCallback
。
請注意,即使 error 參數在技術上存在于回調中,但其值是錯誤的,它仍然不會出現在 Observable 發(fā)出的數組中。
import * as fs from 'fs';
const readFileAsObservable = bindNodeCallback(fs.readFile);
const result = readFileAsObservable('./roadNames.txt', 'utf8');
result.subscribe(x => console.log(x), e => console.error(e));
someFunction((err, a, b) => {
console.log(err); // null
console.log(a); // 5
console.log(b); // "some string"
});
const boundSomeFunction = bindNodeCallback(someFunction);
boundSomeFunction()
.subscribe(value => {
console.log(value); // [5, "some string"]
});
someFunction(a => {
console.log(a); // 5
});
const boundSomeFunction = bindNodeCallback(someFunction);
boundSomeFunction()
.subscribe(
value => {} // never gets called
err => console.log(err) // 5
);
bindNodeCallback(callbackFunc: Function, resultSelector: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable<any>
參量: | 類型: |
---|---|
callbackFunc | Function 。resultSelector類型:Function 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(...args: any[]) => Observable<any>
bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable<any[]>
參量: | 類型: |
---|---|
callbackFunc | (callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any 調度器可選的。默認值為undefined 類型:SchedulerLike 。 |
returns(...args: any[]) => Observable<any[]>
bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2, R3]>
參量: | 類型: |
---|---|
callbackFunc | (callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any 。 調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns() => Observable<[R1, R2, R3]>
bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): () => Observable<[R1, R2]>
參量: | 類型: |
---|---|
callbackFunc | (callback: (err: any, res1: R1, res2: R2) => any) => any 。 調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns() => Observable<[R1, R2]>
bindNodeCallback(callbackFunc: (callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): () => Observable<R1>
參量: | 類型: |
---|---|
callbackFunc | (callback: (err: any, res1: R1) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike 。 |
returns() => Observable<R1>
bindNodeCallback(callbackFunc: (callback: (err: any) => any) => any, scheduler?: SchedulerLike): () => Observable<void>
參量: | 類型: |
---|---|
callbackFunc | (callback: (err: any) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike 。 |
returns() => Observable<void>
bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable<any[]>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(...args: any[]) => Observable<any[]>
bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2, R3]>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any 。 調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(arg1: A1) =>Observable<[R1, R2, R3]>
bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<[R1, R2]>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, callback: (err: any, res1: R1, res2: R2) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(arg1: A1) => Observable<[R1, R2]>
bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<R1>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, callback: (err: any, res1: R1) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(arg1: A1) => Observable<R1>
bindNodeCallback(callbackFunc: (arg1: A1, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1) => Observable<void>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, callback: (err: any) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(arg1: A1) => Observable<void>
bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable<any[]>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(...args: any[]) => Observable<any[]>
bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2, R3]>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(arg1: A1, arg2: A2) => Observable<[R1, R2, R3]>
bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<[R1, R2]>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, arg2: A2, callback: (err: any, res1: R1, res2: R2) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(arg1: A1, arg2: A2) => Observable<[R1, R2]>
bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<R1>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, arg2: A2, callback: (err: any, res1: R1) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(arg1: A1, arg2: A2) => Observable<R1>
bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2) => Observable<void>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, arg2: A2, callback: (err: any) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(arg1: A1, arg2: A2) => Observable<void>
bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable<any[]>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(...args: any[]) => Observable<any[]>
bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2, R3]>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2, R3]>
bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2]>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1, res2: R2) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(arg1: A1, arg2: A2, arg3: A3) => Observable<[R1, R2]>
bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<R1>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, arg2: A2, arg3: A3, callback: (err: any, res1: R1) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(arg1: A1, arg2: A2, arg3: A3) => Observable<R1>
bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3) => Observable<void>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, arg2: A2, arg3: A3, callback: (err: any) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(arg1: A1, arg2: A2, arg3: A3) => Observable<void>
bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable<any[]>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(...args: any[]) => Observable<any[]>
bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2, R3]>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2, R3]>
bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2]>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1, res2: R2) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<[R1, R2]>
bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<R1>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any, res1: R1) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<R1>
bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<void>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, arg2: A2, arg3: A3, arg4: A4, callback: (err: any) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(arg1: A1, arg2: A2, arg3: A3, arg4: A4) => Observable<void>
bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any, scheduler?: SchedulerLike): (...args: any[]) => Observable<any[]>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2, res3: R3, res4: R4, ...args: any[]) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(...args: any[]) => Observable<any[]>
bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2, R3]>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2, res3: R3) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2, R3]>
bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2]>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1, res2: R2) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<[R1, R2]>
bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<R1>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any, res1: R1) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<R1>
bindNodeCallback(callbackFunc: (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any) => any) => any, scheduler?: SchedulerLike): (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<void>
參量: | 類型: |
---|---|
callbackFunc | (arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5, callback: (err: any) => any) => any 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(arg1: A1, arg2: A2, arg3: A3, arg4: A4, arg5: A5) => Observable<void>
bindNodeCallback(callbackFunc: Function, scheduler?: SchedulerLike): (...args: any[]) => Observable<any[]>
參量: | 類型: |
---|---|
callbackFunc | Function 。調度器可選的。默認值為undefined 。類型:SchedulerLike |
returns(...args: any[]) => Observable<any[]>
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯系方式:
更多建議: