由于async函数仍未完成,因此将未定义的响应发送回客户端

时间:2015-12-01 07:52:32

标签: javascript node.js asynchronous

我有一些代码可以创建Web令牌并将其发送回用户。因此,代码首先通过调用createToken函数启动。此函数异步,当webtoken完成创建后将返回。问题出在我的主要代码中,我使用令牌将请求发送回用户,问题是在创建令牌之前发送回送响应。我理解为什么会发生这种情况,因为这是一个异步函数,它会在准备就绪时返回令牌,同时代码将继续继续,因此返回客户端的响应正在发送一个响应,其中令牌变量未定义。我的问题是如何解决这个问题?我知道的一种方法是将我的响应放在creaeToken函数中,但是我不想这样做,因为我的应用程序中出于各种其他原因使用了createToken函数,有时这些原因并不适用。 t根本不包括对客户的回复。所以我的问题是,只有在创建令牌后,我才能将响应发送回客户端?

var token = tokensUtil.createToken(username);
res.send('{"token":"' + token + '"}');

createToken方法如下所示:

var createToken = function(username){

var token = jwt.sign({ "username": username}, secret, {expiresIn: "2h", issuer: issuerName}, function(token){
        console.log(token);
        return token;
    }); 
};

0 个答案:

没有答案