【React Native】文件翻譯閱讀紀錄 - APIs - InteractionManager
Facebook Open Source React Native |
InteractionManager 允許在任何交互/動畫完成後安排長時間運行的工作。特別是,這允許JavaScript動畫平穩運行。
應用程序可以安排在與以下內容交互後運行的任務:
InteractionManager.runAfterInteractions(() => {
// ...long-running synchronous task...
});
將此與其他調度方案進行比較:
- requestAnimationFrame(): 用於隨時間推移動畫視圖的代碼。
- setImmediate/setTimeout(): 後運行代碼,注意這可能會延遲動畫。
- runAfterInteractions(): 後運行代碼,不延遲活動動畫。
觸摸處理系統將一個或多個活動觸摸視為“交互”,並將延遲runAfterInteractions()回調,直到所有觸摸結束或被取消。
InteractionManager 還允許應用程序通過在動畫啟動時創建交互“句柄”並在完成時清除動畫來註冊動畫:
InteractionManager 還允許應用程序通過在動畫啟動時創建交互“句柄”並在完成時清除動畫來註冊動畫:
var handle = InteractionManager.createInteractionHandle();
// run animation... (`runAfterInteractions` tasks are queued)
// later, on animation completion:
InteractionManager.clearInteractionHandle(handle);
// queued tasks run if all handles were cleared
runAfterInteractions 採用普通回調函數或帶有返回Promise的gen方法的 PromiseTask 對象。如果提供了 PromiseTask,那麼在開始執行可能早先同步排隊的下一個任務之前,它將完全解析(包括通過 runAfterInteractions 安排更多任務的異步依賴項)。
默認情況下,排隊的任務在一個 setImmediate 批處理中循環執行。如果使用正數調用 setDeadline ,則任務將僅在截止日期(根據js事件循環運行時間)接近時執行,此時執行將通過 setTimeout 產生,允許觸摸等事件開始交互並阻塞排隊執行任務,使應用程序更具響應性。
默認情況下,排隊的任務在一個 setImmediate 批處理中循環執行。如果使用正數調用 setDeadline ,則任務將僅在截止日期(根據js事件循環運行時間)接近時執行,此時執行將通過 setTimeout 產生,允許觸摸等事件開始交互並阻塞排隊執行任務,使應用程序更具響應性。
Methods
Properties
參考
Methods
runAfterInteractions()
static runAfterInteractions(task)
安排在所有交互完成後運行的函數。返回可取消的“promise”。
createInteractionHandle()
static createInteractionHandle()
通知經理已開始交互。
clearInteractionHandle()
static clearInteractionHandle(handle)
通知經理交互已完成。
setDeadline()
static setDeadline(deadline)
在 numberLoopRunningTime 達到截止期限值之後,正數將使用 setTimeout 來計劃任何任務,否則所有任務將在一個 setImmediate 批處理中執行(默認)。
0 意見