下面的代码有2个文件,并且有client.js,它调用服务器文件,但没有获得同步输出。我尝试了promise,bluebird,async_await,但没有成功。预期输出是控制台中的字母表序列。
不要使用settimout。
理解文件。server.js :服务器文件正在使用仅包含路由内容的NodeAPI。
Client.js :此文件中包含已尝试的逻辑
您需要使用两个控制台,第一个控制台运行server.js,第二个控制台运行client.js,输出将在server.js控制台中打印。
Expecting output is
a
b
c
d
e
/////////////////server.js/////////////////
var express = require('express');
var bodyParser = require('body-parser')
var app = express();
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
app.post('/', function (req, res) {
console.log(req.body.test)
res.status(200).send('ok');
});
var server = app.listen(3000, function () {
console.log('ok');
});
//////////////client.js///////////////////
//var Promise = require('bluebird');
var request = require('request');
console.log('server file called');
var array_data = ['a', 'b', 'c', 'd', 'e'];
// var promises = [];
// for(let i = 0; i < array_data.length; i++) {
// var promise = request.post({url: 'http://localhost:3000',form : {key:array_data[i]}});
// }
// var page = 0;
// var last_page = array_data.length;
// (function loop() {
// if (page < last_page) {
// request.post({
// url: 'http://localhost:3000',
// form: 'test=' + array_data[page]
// }, function (error, response, body) {
// page++;
// loop();
// });
// }
// }());
// async function loopAsync() {
// for (let i = 0; i < array_data.length; i++) {
// await request.post({
// url: 'http://localhost:3000',
// form: 'test=' + array_data[i]
// });
// }
// }
// loopAsync();
async function loopAsync() {
var page = 0;
var last_page = array_data.length;
while (page < last_page) {
await request.post({
url: 'http://localhost:3000',
form: 'test=' + array_data[page]
});
page++;
}
}
loopAsync();
[enter image description here][1]
[1]: https://i.stack.imgur.com/WVlut.png发布于 2019-01-18 18:21:51
正如我在研发中所做的那样,请求模块没有返回promise,因此需要使用request-promise库。
let request = require('request');
let rp = require('request-promise');
var array_data = ['a', 'b', 'c', 'd', 'e'];
//with the use of request-promise library
async function loopAsync() {
var page = 0;
var last_page = array_data.length;
while (page < last_page) {
var options = {
method: 'POST',
uri: 'http://localhost:3000',
body: {
test: array_data[page]
},
json: true // Automatically stringifies the body to JSON
};
await rp(options);
page++;
}
}
loopAsync();https://stackoverflow.com/questions/54249746
复制相似问题