0
所以我一直在做一些閱讀,我想我對這個問題有一個總體把握,但可以使用一些更有經驗的人的洞察力。我一直在嘗試在Meteor中編寫一個簡單的RSS閱讀器,並且一直在面臨一些異步調用Meteor方法的問題。我目前在服務器上定義方法(同步)並在客戶端上調用它(異步)。我不明白的是,當我嘗試在服務器上創建HTTP.call時,如果將回調傳遞到請求中,則會返回傳遞給我的客戶端的未定義值。但是,當我同步API請求時,一切似乎都正常。這是我應該期待的正常行爲/我應該如何進行API調用?需要澄清異步調用流星方法
Meteor.methods({
\t \t getSubReddit(subreddit) {
\t \t \t this.unblock();
\t \t \t const url = 'http://www.reddit.com/r/' + subreddit + '/.rss';
\t \t \t const response = HTTP.get(url, {}, (err, res) => {
\t \t \t \t if(!err) {
\t \t \t \t \t //console.log(res.content);
\t \t \t \t \t return res;
\t \t \t \t } else {
\t \t \t \t \t return err;
\t \t \t \t }
\t \t \t });
\t \t }
\t });
這裏的服務器側所限定的方法。請注意,記錄res.content顯示我實際上從呼叫中獲得了正確的內容。我試着閱讀關於這個主題的其他一些答案,並且看到了有關使用Future/wrapAsync的一些事情,但我不確定我能得到它。任何幫助將不勝感激!
請看看我的答案爲[這個問題](https://stackoverflow.com/questions/33644547)。 –
謝謝@DavidWeldon。因此,如果我理解正確,如果我希望在服務器上異步運行我的調用,則必須將調用的返回值存儲在服務器上的某個位置,然後將其傳遞給客戶端? –
通常情況下,模式是:(1)客戶端對服務器方法進行異步調用,(2)該方法對某個服務進行同步調用(使用try/catch就像我的示例),然後將值返回給客戶端3)客戶端收到數據並執行相關操作。那有意義嗎? –