javascript - 如何在 nodejs 中同步调用请求?

标签 javascript node.js request

我的 nodejs 应用程序中有一个名为 get_source_at 的函数。它将 uri 作为参数,其目的是从该 uri 返回源代码。我的问题是我不知道如何使函数同步调用请求,而不是给它那个回调函数。我想要控制流在加载 uri 所需的几秒钟内停止。我怎样才能做到这一点?

function get_source_at(uri){
    var source;
    request({ uri:uri}, function (error, response, body) {
        console.log(body);
    });
    return source;
}

另外,我已经阅读了“事件”以及 Node 是如何“事件”的,我在编写代码时应该尊重这一点。我很高兴这样做,但我必须有办法确保在继续我的应用程序的控制流之前我有来自 uri 的源代码 - 所以如果这不是通过使函数同步,怎么能做到?

最佳答案

您可以使用 deasync :

function get_source_at(uri){
    var source;
    request({ uri:uri}, function (error, response, body) {
        source = body;
        console.log(body);
    });
    while(source === undefined) {
      require('deasync').runLoopOnce();
    }
    return source;
}

关于javascript - 如何在 nodejs 中同步调用请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9884418/

相关文章:

javascript - 在javascript中为对象设置变量

javascript - webpack2将sass/scss编译成js而不是css

node.js - npm 本地安装

html - 如何在不使用任何框架的情况下访问以表单提交的数据,该数据用nodejs保存为另一个文件

json - 在没有 BodyParser 的情况下在 Express 中解析 JSON

javascript - 在 jquery.ajax 中重新使用变量

javascript - 如何在异步操作中指示 "doneness"

java - 松弛请求验证 : Can't compute matching request digest using signed secret

iphone - 如何使用 SDK/以编程方式在 iPhone 上获取 AppID?

javascript - 循环中的 jquery 动画返回相同的索引