gpt4 book ai didi

javascript - 如何在node.js中从异步创建同步功能?

转载 作者:行者123 更新时间:2023-12-03 05:05:26 24 4
gpt4 key购买 nike

我有一个返回类型函数:

var responseData = '';
function getResponseFromKey(key){

client.get(key, function(err, reply){
responseData = reply;
});
return responseData;
}

当我第一次调用这个函数时,它返回空白,然后第二次在再次运行后返回我想要的值。

我调用此函数在 html 页面中打印。

http.createServer(function(request, response){
response.writeHead(200, {'Content-Type':'text/plain'});
getResponseFromKey("my_key");
console.log(responseData);
}).listen(8083);

由于我熟悉 Node ,该函数以异步方式运行。你能帮我做同步方式吗?在这种情况下我需要使用生成器吗?

帮助将不胜感激!

最佳答案

您可以使用回调promise生成器

使用回调,需要发送回调函数并调用它,而不是返回值

function getResponseFromKey(key, callback){
client.get(key, function(err, reply){
callback(reply);
});
}

http.createServer(function(request, response){
response.writeHead(200, {'Content-Type':'text/plain'});
getResponseFromKey("my_key", function() {
console.log(responseData);
});
}).listen(8083);

使用promise,需要返回一个Promise

function getResponseFromKey(key) {
return new Promise(function(resolve, reject) {
client.get(key, function(err, reply) {
return resolve(reply);
});
})
}

http.createServer(function(request, response){
response.writeHead(200, {'Content-Type':'text/plain'});
getResponseFromKey("my_key").then(function(responseData) {
console.log(responseData);
});
}).listen(8083);

如果您使用的是最新版本的nodejs,您可以使用箭头函数,以使您的代码更具可读性。

关于javascript - 如何在node.js中从异步创建同步功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42020393/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com