是一个功能:
function getItem(key) {
var item;
func(key, function(items) {
for (var key2 in items) {
if (key2 === key && items.hasOwnProperty(key2)) {
item = items[key2];
}
}
});
return item;
}
当我们调用它时,我们得到的响应未定义。如何等待回调函数执行,然后才返回结果?
答案 0 :(得分:2)
只需将回调作为函数的参数引入:
function getItem(key, callback) {
func(key, function(items) {
for (var key2 in items) {
if (key2 === key && items.hasOwnProperty(key2)) {
callback(items[key2]);
}
}
});
}
getItem('bob', function (key) {
console.log(key);
});
答案 1 :(得分:1)
你做不到。就这样。因为Javascript无法等待异步回调。
您可以重复使用回调的概念来返回您的值而不是直接返回它
function getItem(key, callback) {
var item;
func(key, function(items) {
for (var key2 in items) {
if (key2 === key && items.hasOwnProperty(key2)) {
item = items[key2];
}
}
callback(item);
});
}
然后使用它getItem('key', function( item ) { ... })