0
我試着打2個web服務並得到了他們的迴應。 Web服務應該被並行訪問,而不是Node.js異步執行。 childprocess.spawn
也行爲異步。任何關於如何從同一個Node.js代碼中並行訪問這兩個Web服務的想法將非常有用。在nodejs中同步運行一個進程
我試着打2個web服務並得到了他們的迴應。 Web服務應該被並行訪問,而不是Node.js異步執行。 childprocess.spawn
也行爲異步。任何關於如何從同一個Node.js代碼中並行訪問這兩個Web服務的想法將非常有用。在nodejs中同步運行一個進程
像robertklep建議異步是去
/**
* Fetches both goole and yahoo at the same time, but waits until both
* are done before returning
**/
var async = require('async')
var request = require('request')
var inspect = require('eyespect').inspector()
doParallel(function (err) {
if (err) {
inspect(err, 'error running parallel tasks')
}
inspect('********************************************************************')
inspect('done with parallel tasks')
})
function doParallel(callback) {
async.parallel([
// fetch google.com
function (cb) {
var url = 'http://www.google.com'
request(url, function (err, res, body) {
if (err) {
return cb({
message: 'error getting google.com',
url: url,
error: err
})
}
inspect(res.statusCode, 'google response status code')
inspect(body, 'google response body')
cb()
})
},
function (cb) {
var url = 'http://www.yahoo.com'
request(url, function (err, res, body) {
if (err) {
return cb({
message: 'error getting google.com',
url: url,
error: err
})
}
inspect(res.statusCode, 'yahoo response status code')
inspect(body, 'yahoo response body')
cb()
})
}
], callback)
}
var async = require('async')
var request = require('request')
var inspect = require('eyespect').inspector()
doSeries(function (err) {
if (err) {
inspect(err, 'error running parallel tasks')
}
inspect('********************************************************************')
inspect('done with parallel tasks')
})
/**
* Fetch google first, wait for it to finish, and then fetch yahoo
**/
function doSeries(callback) {
async.series([
// fetch google.com
function (cb) {
var url = 'http://www.google.com'
request(url, function (err, res, body) {
if (err) {
return cb({
message: 'error getting google.com',
url: url,
error: err
})
}
inspect(res.statusCode, 'google response status code')
inspect(body, 'google response body')
cb()
})
},
function (cb) {
var url = 'http://www.yahoo.com'
request(url, function (err, res, body) {
if (err) {
return cb({
message: 'error getting google.com',
url: url,
error: err
})
}
inspect(res.statusCode, 'yahoo response status code')
inspect(body, 'yahoo response body')
cb()
})
}
], callback)
}
由於諾亞將盡快嘗試更新 – 2013-03-14 10:45:08
退房https://github.com/caolan/async#並行 – robertklep 2013-03-12 06:53:27