0

我正在使用 request npm 模块并在主流请求中发出 4 个请求。先说结论,四个请求中只有两个随机成功。

下面是我的代码。

router.get('/', function(req, res){
    //TODO
    request(url, function(error, response, body) {
        if(err) throw error;
        //TODO-
        request(comnURL, function(errp,resp, body){
            if(errp) throw errp;
            comnBODY = body;
            console.log(body);
            console.log("\n\n");
        });
        request(intrURL, function(errp,resp, body){
            if(errp) throw errp;
            intrBODY = body;
            console.log(body);
            console.log("\n\n");
        });
        request(reptURL, function(errp,resp, body){
            if(errp) throw errp;
            reptBODY = body;
            console.log(body);
            console.log("\n\n");
        });
        request(addiURL, function(errp,resp, body){
            if(errp) throw errp;
            addiBODY = body;
            console.log(body);
            console.log("\n\n");
        });
        //TODO-
    });
});

每个响应请求都是随机不同的,从 4 个子请求中选择 2 个。这可能是什么原因以及如何避免它。

4

1 回答 1

1

您的代码有一些语法错误,但工作正常。这可能是一个异步问题。如果您希望这 4 个请求按顺序执行,则必须这样输入:

'use strict';

const request = require('request')

request('https://jsonplaceholder.typicode.com/posts/5', function(error, response, body) {
    if(error) throw error;
    //TODO-
    request('https://jsonplaceholder.typicode.com/posts/1', function(errp,resp, body){
        if(errp) throw errp;
        let comnBODY = body;
        console.log(body);
        console.log("1\n\n");
        request('https://jsonplaceholder.typicode.com/posts/2', function(errp,resp, body){
            if(errp) throw errp;
            let intrBODY = body;
            console.log(body);
            console.log("2\n\n");
            request('https://jsonplaceholder.typicode.com/posts/3', function(errp,resp, body){
                if(errp) throw errp;
                let reptBODY = body;        
                console.log(body);
                console.log("3\n\n");
                request('https://jsonplaceholder.typicode.com/posts/4', function(errp,resp, body){
                    if(errp) throw errp;
                    let addiBODY = body;
                    console.log(body);
                    console.log("4\n\n");
                });
            });
        });
    });
});

另一种方法是使用承诺方式,因为您可以使用request-promise 模块

于 2017-11-10T08:19:56.997 回答