最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

围绕异步和return语句的混乱

IT培训 admin 10浏览 0评论

围绕异步和return语句的混乱

我想做的是向Web API发出请求,然后如果输入有效,则从函数返回true,否则返回false。我希望请求是异步的,但是我不希望函数在验证请求之前返回。在发出请求时,我只想继续处理输入。

这里是函数的重要部分:

request({
        url: url,
        json: true
    }, function (error, response, body) {

        if (!error && response.statusCode === 200) {
            console.log(JSON.stringify(body));
            if(body.player !== "null") {
                console.log(body.player.socialMedia.links["DISCORD"]);
                console.log((client.users.get(author).username + "#" + client.users.get(author).discriminator));
                if (body.player.socialMedia.links["DISCORD"] === (client.users.get(author).username + "#" + client.users.get(author).discriminator)) {
                    fs.writeFile(`users/${body.player.uuid}.json`, `{"uuid":"${body.player.uuid}",\n"ign":"${nm}",\n"id":"${author}"}`, {"flag": "w"});
                    successFlag = true;
                }
            }
        }
    });
    console.log(successFlag);
    return successFlag;

如果我使用async / await,我不确定在获取数据时是否会继续处理inpute。

回答如下:

return successFlag;应该在回调内部,否则如果没有响应,它将被返回。因此,将最后三行更改为

    console.log(successFlag);
    return successFlag;
});

围绕异步和return语句的混乱

我想做的是向Web API发出请求,然后如果输入有效,则从函数返回true,否则返回false。我希望请求是异步的,但是我不希望函数在验证请求之前返回。在发出请求时,我只想继续处理输入。

这里是函数的重要部分:

request({
        url: url,
        json: true
    }, function (error, response, body) {

        if (!error && response.statusCode === 200) {
            console.log(JSON.stringify(body));
            if(body.player !== "null") {
                console.log(body.player.socialMedia.links["DISCORD"]);
                console.log((client.users.get(author).username + "#" + client.users.get(author).discriminator));
                if (body.player.socialMedia.links["DISCORD"] === (client.users.get(author).username + "#" + client.users.get(author).discriminator)) {
                    fs.writeFile(`users/${body.player.uuid}.json`, `{"uuid":"${body.player.uuid}",\n"ign":"${nm}",\n"id":"${author}"}`, {"flag": "w"});
                    successFlag = true;
                }
            }
        }
    });
    console.log(successFlag);
    return successFlag;

如果我使用async / await,我不确定在获取数据时是否会继续处理inpute。

回答如下:

return successFlag;应该在回调内部,否则如果没有响应,它将被返回。因此,将最后三行更改为

    console.log(successFlag);
    return successFlag;
});

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论