gpt4 book ai didi

node.js - Nodejs函数的返回值

转载 作者:太空宇宙 更新时间:2023-11-04 03:01:57 28 4
gpt4 key购买 nike

请帮帮我我有一个脚本

export    function GetKey(inn, res) {
try {
const body = {
7709798583: {
name: 'someName',
key: '123'
},
7718266352: {
name: 'otherName',
key: '123'
}
};
res(body[inn]['key']);

} catch (err) {

res('0000000000000');
}
};

在其他文件中我尝试使用此功能

GetKey(param, (name) => {
console.log(name);
});

没关系。但我需要返回参数的回调。如何?

 var param =  GetKey(param, (name) => {
return name;
});

不正确并返回未定义

最佳答案

这不是回调的工作原理;不过,您可以使用 Promise 和 async-await 语法来伪造该行为。

如果您想像现有的那样编写代码,则需要将其余逻辑放入函数中并将其直接传递给回调:

var param = ''

var allYourLogic = name => {
// YOUR LOGIC
param = name
}

GetKey(param, allYourLogic);

或者您可以简单地内联您的逻辑:

GetKey(param, (name) => {
param = name
// YOUR LOGIC
});

使用 Promise 语法,如下所示:

new Promise(resolve => {
GetKey(param, resolve)
})
.then(name => {
param = name
// YOUR LOGIC
})

最后,使用 async-await 方法:

var param = (
await new Promise(resolve => {
GetKey(param, resolve)
})
)

确实,您似乎正在做一些奇怪的事情,这就是您首先遇到此问题的原因。

一旦使用回调,整个应用程序就会像异步一样运行,因为回调不会在 Node.js 的事件循环中立即执行。相反,您所在的当前函数将在 GetKey 函数调用回调方法之前完成执行。

关于node.js - Nodejs函数的返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52871600/

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