2017-09-04 42 views
0

如果有人能幫助我解決這個問題,我將非常感激。我認爲那裏可能有一個簡單的解決方案,但我無法解決它,這是非常令人沮喪的。JavaScript - 將數據傳遞給具有預定義參數的回調

我正在使用Expo開發React Native應用程序。他們的SDK具有「downloadResumable」功能,允許用戶下載文件。

提供下載進度信息的回調函數獲取一個對象'totalBytesWritten',並且'totalBytesExpectedToWrite'道具自動傳遞給它。

有沒有什麼辦法可以將'songId'參數傳遞給createDownloadResumable中的回調函數,以便回調函數不需要引用外部'_id'變量?

在此先感謝任何能夠幫助我的人!

const { _id } = song; 

const callback = ({ totalBytesWritten, totalBytesExpectedToWrite }) => dispatch(updateDownloadProgress(
    _id, 
    totalBytesWritten, 
    totalBytesExpectedToWrite 
)); 

const createDownloadResumable = songId => FileSystem.createDownloadResumable(
    link, 
    FileSystem.documentDirectory + `${songId}.mp3`, 
    {}, 
    callback, 
); 

const downloadResumable = createDownloadResumable(_id); 

回答

0

您應該能夠通過這樣的閉包內創建回調做到這一點:

const { _id } = song; 

const generateCallback = (songId) => { 
    return ({ totalBytesWritten, totalBytesExpectedToWrite }) => dispatch(updateDownloadProgress(
    songId, 
    totalBytesWritten, 
    totalBytesExpectedToWrite 
)); 
} 

const createDownloadResumable = (songId) => FileSystem.createDownloadResumable(
    link, 
    FileSystem.documentDirectory + `${songId}.mp3`, 
    {}, 
    generateCallback(songId), 
); 

const downloadResumable = createDownloadResumable(_id); 
+0

哎呀,真的挺到最後一個簡單的解決方案。但是,我正在尋找的是,非常感謝。非常感激! –

相關問題