2017-09-26 83 views
1

我有一些第三方API運行需要大約30分鐘才能返回結果的函數(他們做了一些冗長的計算)。 現在,如果我使用Nodejs通過適當的回調來調用這樣的API,默認情況下Nodejs會等待函數返回結果的30分鐘還是會超時? 如果超時,有沒有辦法增加等待時間?如果NodeJS功能需要很長時間,它會超時嗎?

+0

是如何「第三方API」融入節點環境?一個HTTP請求肯定會超時。 – Bergi

+0

API的文檔應該說明什麼是「適當的回調」。是的,它會等待,如果這是它應該如何使用。 – Bergi

回答

2

的Linux的違約可能20歲之間使用任何東西 - 因爲超時120秒 http://www.sekuda.com/overriding_the_default_linux_kernel_20_second_tcp_socket_connect_timeout

根據其要求您使用庫,你可以在設置超時有不同的語法。我個人很喜歡request,這裏引用https://github.com/request/request

request.get('http://10.255.255.1', {timeout: 1500}, function(err) { 
    console.log(err.code === 'ETIMEDOUT'); 
    // Set to `true` if the timeout was a connection timeout, `false` or 
    // `undefined` otherwise. 
    console.log(err.connect === true); 
    process.exit(0); 
}); 

我不認爲NodeJS函數本身會超時。

3

I假設您正在使用express如果您使用express,則可以添加下面的代碼以增加等待時間。

var server = app.listen(app.get('port'), function() { 
    debug('Express server listening on port ' + server.address().port); 
}); 
server.timeout = 1000; 

否則你可以使用純http

var http = require('http'); 
var server = http.createServer(function (req, res) { 
    setTimeout(function() { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
    }, 200); 
}).listen(1337, '127.0.0.1'); 

server.timeout = 20; 
+0

我不明白「某些第三方API」有哪些表達方式? – Bergi

+0

根據問題Nodejs用於調用第三方API,因此,我們必須處理nodejs端的等待時間以消除超時事件。 –

+0

「呼叫第三方API」可以表示任何內容。不,我們不能假設OP使用「request」作爲任何事情 – Bergi