等待功能执行

时间:2014-03-03 10:53:10

标签: javascript

是一个功能:

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;
}

当我们调用它时,我们得到的响应未定义。如何等待回调函数执行,然后才返回结果?

2 个答案:

答案 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 ) { ... })