如何将已解决的承诺的内容存储在变量中

时间:2018-09-06 15:59:15

标签: javascript node.js

我有一个包含诺言的函数。该函数执行HTTP请求,我想解决该问题,并将响应作为变量中的值返回。

function sendCommand(auth, playerId, command) {
    return new Promise((resolve, reject) => {
        request.post(`https://test.com/${playerId}/command`,{
            headers: { Authorization: auth },
            json: {
                "arg": `${command}`
            }
        }, function status(err, response, body) {
            if (response.statusCode === 200) {
                resolve(body)
            } else {
                reject(err)
            }
          }
        )  
    })
}

我从其他文件运行此功能,所以请执行以下操作:

module.exports = {
    doSomething: (playerId, command) => {
        loginHelper.getToken().then(token =>
        sendCommand(token, playerId, command))
    }
}

在另一个文件上,我想将已解决的响应存储在这样的变量中:

const commandHelper = require(__helpers + 'command-helper')

let test = commandHelper.doSomething(playerId, 'command')

我希望测试变量包含响应数据。

1 个答案:

答案 0 :(得分:1)

您应该在异步功能中使用await 示例:

function hi(){
  return new Promise((res,rej)=>{
       res("hi");
   }
}
async function see(){
   var hiStr = await hi();
   console.log(hiStr); // hi
}