请帮帮我 我有一个剧本
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;
});
不正确并返回未定义
答案 0 :(得分:4)
这不是回调的工作方式;不过,您可以使用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
})
最后,使用异步等待方法:
var param = (
await new Promise(resolve => {
GetKey(param, resolve)
})
)
但是,实际上,您似乎在做一些奇怪的事情,这就是为什么您首先遇到此问题的原因。
一旦使用回调,您的整个应用程序将表现为异步状态,因为回调不会立即在Node.js的事件循环中执行。相反,您当前所在的函数将在GetKey
函数调用回调方法之前完成执行。