Javascript 我可以用'request`npm包进行同步呼叫吗?

Javascript 我可以用'request`npm包进行同步呼叫吗?,javascript,node.js,api,request,Javascript,Node.js,Api,Request,我在我的NodeJS应用程序中使用模块来进行服务器到服务器的API调用。我是这样进行API调用的: request(options, function (error, response, body) { if( error ){ // return error response } // return success response here }); 出于某种原因,我需要不使用这种异步调用方式,而是同步执行。那么,有没有办法以同步方式进行此调用。我尝试并

我在我的NodeJS应用程序中使用模块来进行服务器到服务器的API调用。我是这样进行API调用的:

request(options, function (error, response, body) {
    if( error ){
       // return error response
    }
    // return success response here
});
出于某种原因,我需要不使用这种异步调用方式,而是同步执行。那么,有没有办法以同步方式进行此调用。我尝试并找到了一些其他模块,但我需要使用相同的模块


谢谢

不,不行。请求将返回您的承诺,您必须在某处使用.then()或使用异步/等待模式调用函数来处理它。

不,您不能。请求将返回您的承诺,您必须在某处使用.then()或使用async/await模式调用函数来处理它。

因为HTTP请求本质上是异步的,所以您无法同步执行它。但是,您可以使用ES6+
Promises
async/await
如下所示:

// First, encapsulate into a Promise
const doRequest = () => new Promise((resolve, reject) => request(options, function (error, response, body) {
  if( error ){
    reject(error)
  }
  resolve(response)
});

// And then, use async/await

const x = 1 + 1

const response = await myRequest()

console.log(response)

更多信息:

因为HTTP请求本质上是异步的,所以不能同步执行。但是,您可以使用ES6+
Promises
async/await
如下所示:

// First, encapsulate into a Promise
const doRequest = () => new Promise((resolve, reject) => request(options, function (error, response, body) {
  if( error ){
    reject(error)
  }
  resolve(response)
});

// And then, use async/await

const x = 1 + 1

const response = await myRequest()

console.log(response)

更多信息:

如@Errorname所示,承诺很可能就是您想要的。您也可以使用@Errorname所示的包
请求承诺

,而不是手工编写代码,承诺可能就是您要寻找的。您也可以使用包
请求承诺

来代替手工编写代码。出于某种原因,我不需要使用这种异步调用方式,而是同步执行。-考虑提供理由并解释你的情况。有一个很好的机会,你有XY的问题,应该以另一种方式解决。有。这是一种黑客行为。出于某种原因,我不需要使用这种异步方式进行调用,而是同步进行。-考虑提供理由并解释你的情况。有一个很好的机会,你有XY的问题,应该以另一种方式解决。有。这是一个黑客。