2016-02-19 42 views
-1

我嘗試使用的是創建一個應用程序反應本地人,包含globalDB和的LocalDB其中有關於本地數據庫和全局數據庫(網頁DB)數據 現在我想比較一些datam,我無法解決我的問題: 我有2個功能在2個分類,它返回數據庫的數據。 現在我想要的是從他們的功能獲得JSON,但它不工作,因爲功能是異步的,他們需要回調, 是否有任何選項來獲取數據的JSON? 我的意思是說這些是異步funcs是: 它從使用獲取的globalDB,我不能從函數返回一個JSON(它返回我一個承諾) 並從本地數據庫我使用react-native-db-models ,它返回我一個承諾,而不是一個JSON (我想在的LocalDB有1個函數將返回我整計數,這樣做:我創造了一些靜態類反應本地異步和等待問題

var objCounts = {}; 
objCounts.people = this.peopleCounts(); 
objCounts.example = this.exampleCounts(); 
etc.... 
) 

如果不明確,生病試圖解釋這更好: 我想創建一個函數來檢查本地數據庫是否具有與服務器數據庫相同的行,因此可以說現在稱爲checkData() 這個函數,我有2個類:localDB和globalDB。 在他們每個人也有功能,這應該返回信息有關的數據, 中的LocalDB有功能:getPeople,getPencils,getCounts 在globalDB有功能:getPeople,getPencils,getCounts。 現在,我想在checkData()來檢查getCounts相等, 我的意思是,生病GET JSON,如:

[ 
people: "5", 
pencils: "6" 
] 
在globalDB和的LocalDB getCounts

(也許不一樣,取決於數據在本地,但這就是我想檢查) 現在,我沒有成功做到這一點,因爲getCounts函數返回承諾.. can any1請建議一個解決方案我怎麼能達到我想要的?

* UPDATE: 使用麥克風解決方案,我從globalDB類獲得了數據, 仍然得到了與的LocalDB類問題:使用 IM反應母語-DB-模型,並調用一個函數get_all這需要一個回調參數,任何想法如何將其轉移到等待和異步?

+1

您是使用'async await'還是'Promises'?它們在JavaScript中是不同的東西。 – Mike

回答

1

使用Promises

Promise.all([ 
    getPeople(), 
    getPencils(), 
    getCounts() 
]).then(function (results) { 
    console.log(results[0]); // people JSON 
    console.log(results[1]); // pencils JSON 
    console.log(results[2]); // counts JSON 
}); 

使用async await

async function getAll() { 
    let people = await getPeople(); 
    let pencils = await getPencils(); 
    let counts = await getCounts(); 

    console.log(people); // people JSON 
    console.log(pencils); // pencils JSON 
    console.log(counts); // counts JSON 
} catch (error) { 
    // handle errors 
} 

對於react-native-db-models我想試試這個: (從他們的資料爲準......我以前沒有使用過它,它可能不工作)。

var App = React.createClass({ 
    get_users: async function() { 
    try { 
     let result = await DB.users.get_all(); 
     console.log(result); 
    } catch (e) { 
     console.error(e); 
    } 
    }, 

render: function(){ 
    return (
    <View> 
     <Text onPress={this.get_users}> Hello </Text> 
    </View> 
    ); 
    } 
}); 
+0

現在就試試吧 – matan

+0

好的,謝謝你的回答,我還有1個問題: 我使用本地數據庫的庫,但在創建靜態輔助函數時遇到一些問題... 我試着做一個像localDB.getPeople(),問題是 - 我需要傳遞一個回調作爲參數,因爲獲取本地數據的函數是異步的... 我該如何返回承諾,以便您的解決方案能夠工作? – matan

+0

非常感謝你! 我成功從globalDB獲得價值, 我只需要在localDB上使用幫助, 即時通訊使用react-native-db-models,然後調用一個函數get_all,這需要參數中的回調, 任何想法如何轉移它等待和異步? – matan