2017-05-24 40 views
-2

我做了一個推特機器人,它的工作。但是我想重構一些嵌套的邏輯函數。如何獲得這個twitter的參數api電話

我有這個Twitter的API調用,我想返回應答參數,

T.get('trends/place', { id: '23424977' }, function(err, reply) { 
    // THE WHOLE APP IS BASICALLY IN HERE 
{ 

它不會讓我的名字一樣

T.get('trends/place', { id: '23424977' }, function getTrends(err, reply) { 
    // THE WHOLE APP IS BASICALLY IN HERE 
{ 

我一些其他的想法搞砸周圍的功能但沒有運氣。

整個機器人在這裏https://glitch.com/edit/#!/trending-mishap?path=server.js

+0

您當然可以說出那樣的功能(雖然沒有明顯的需要之上;但如果你單獨定義的函數,然後只給API調用'getTrends',*是*將使意義)。目前還不清楚你在問什麼。請仔細閱讀[*我如何提出一個好問題?](/ help/how-to-ask),並使用「編輯」鏈接添加詳細信息和特定問題。請注意,**所有**的相關代碼**必須**在問題中,而不是鏈接;請參閱:[mcve] –

+0

@TJCrowder謝謝你提出一個好的問題鏈接...不(面臨) – j1mmy

+0

我認爲這主要是一個重複[如何返回來自異步調用的響應](https:/ /stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call/14220323#14220323)。您不能直接並同步地從異步操作返回結果。您必須稍後使用回調或返回承諾來回傳結果。 – jfriend00

回答

0

是最好的,我能理解這個問題,這個問題是要回調中的代碼分離出來成爲獨立的功能。沒關係,沒有什麼能阻止你這樣做。

這裏有一個粗略的例子:

T.get('trends/place', { id: '23424977' }, getTrends); 
function getTrends(err, reply) { 
    if (err) { 
     handleError(err); 
     return; 
    } 
    doSomethingWith(reply); 
} 
function doSomthingWith(reply) { 
    // ... 
} 

等等等等

0

移動你的功能了。獲得的參數,並調用它在不用彷徨回調,傳遞的答覆。

var yourSpecialFunction = function(values) { 
    // do things here 
}; 
T.get('trends/place', { id: '23424977' }, function(err, reply) { 
    if (err) { 
     // handle the error 
    } else { 
     yourSpecialFunction(reply); 
    } 
}