2016-08-09 441 views
0

我有以下腳本:同步GET請求

var request = require("request"); 
var slogans = request.get("https://raw.githubusercontent.com/queatech/slogans/master/slogans.txt", function(err, res, body){ 
    if (!err && res.statusCode == 200) { 
     return body.split("\n").splice(-1); 
    } 
}); 
console.log(slogans); 

我希望腳本的輸出爲

[ '終極Q &網站',「自由Q &一Site','The Idea Q & A Site']

但是,我得到了長的JSON GET查詢。有沒有辦法將變量slogans設置爲https://raw.githubusercontent.com/queatech/slogans/master/slogans.txt的GET請求?
這可能嗎?

回答

0

根據該請求庫的源代碼[1],request.get將返回一個Request對象。你實際需要的是迴應。

您已將功能傳遞給您的request.get調用,它被稱爲回調函數,此函數接收參數err,resbodyres代表響應,檢查它找到你要找的東西。最後,body包含您請求的數據。

您只能在回調函數的範圍和回調函數體內部訪問這些變量(errresbody)在的時候,你的請求的響應到達時纔會執行。

你寫任何代碼後request.get將「並行」執行,這意味着它不會等待你的迴應到達。

[1] https://github.com/request/request/blob/master/index.js

+0

恐怕這並沒有解決我的問題。我想知道,我怎樣才能將'slogans'變量設置爲[this](https://raw.githubusercontent.com/queatech/slogans/master/slogans.txt)頁面的字符「\ n 「在GET請求中? – baranskistad

+0

如果你真的想保持你的代碼行在這個形狀,你可以看看異步等待。 – FaureHu