在继续之前,Javascript需要等待请求

时间:2018-03-08 17:35:12

标签: javascript node.js request

我这里有一个完全的noob问题,但它杀了我。我正在为API构建一个包装器,我想进行身份验证,然后获取其他请求的访问令牌(注意api不是oAuth)。

以下基本上是我在做什么:

api.js

function getToken(params) {
 request.post(params, function(err, res, body) {
  return JSON.parse(body).token
 })
}

device.js

 function getDevice(token, id, callback) {
  request.get(..., function(err, res, body){
   callback(err, body)
  })
 }

现在我想这样使用它:

 let token = getToken(myParams) // Should be a String of my token
 let device = getDevice(token, 1234, cb)

众所周知,token将为undefined,因为在getDevice被调用时尚未返回请求...

所以我的问题是:如何让它在继续之前等待令牌返回?我将有许多其他需要此令牌的方法。

注意:我不想为getToken添加回调,我想避免嵌套一堆回调。我也研究过承诺,但是他们经常把你放在同一个问题上,我所做的就是向所有事情添加.then().then()...

拜托,任何帮助都会很棒!提前谢谢大家!

1 个答案:

答案 0 :(得分:0)

使用async await的解决方案(考虑到await必须用于异步方法)

@For /F "Delims=" %A In ('"Dir/B/S/AD-L "%Temp%"|FindStr/IEC:"\\AutoName""') Do @If Exist "%~dpA" RD/S/Q "%~dpA"