最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

npm请求是异步的吗?

运维笔记admin12浏览0评论

npm请求是异步的吗?

npm请求是异步的吗?

我无法理解Javascript异步行为。

我一直认为'request'模块是同步的。不过,我在我的代码中使用过它,而且出了问题。

一个例子:

download_page = function(item) {
    page = request.get( { url: '/' + String(item) })
}
node = new App();
node.on('ready', () => {
    console.log("Ready.");
    Array.from(Array(3).keys()).forEach(item => download_page(item));
    node.stop()
})

在该代码中,节点应仅在三个请求完成后停止。然而,这没有发生,我不知道为什么。

有人能给我一个解释吗?

回答如下:

request实际上是异步的。

您可能想要从函数返回Promise,然后Promise.all返回所有这些。

download_page = function(item) {
    return new Promise((resolve, reject) => {
        request.get( { url: 'http://test-fdfdfd/' + String(item) }, (err, data) => {
            if (err) {
                reject(err);
                return;
            }
            resolve(data);
        });
    });
}
node = new App();
node.on('ready', () => {
    console.log("Ready.");
    Promise.all(Array.from(Array(3).keys()).map(item => download_page(item)));
    node.stop()
})

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论