Actually, when you pass a callback, method doesn't return immediately, but waits for results and calls callback function.(PECL memcached >= 0.1.0)
Memcached::getDelayed — Request multiple items
   Memcached::getDelayed() issues a request to memcache for
   multiple items the keys of which are specified in the
   keys array. The method does not wait for response
   and returns right away. When you are ready to collect the items, call
   either Memcached::fetch() or
   Memcached::fetchAll(). If with_cas
   is true, the CAS token values will also be requested.
  
   Instead of fetching the results explicitly, you can specify a result callback via
   value_cb parameter.
  
keysArray of keys to request.
with_casWhether to request CAS token values also.
value_cb
       The result callback or null.
      
   Повертає true у разі успіху або false в разі помилки.
   За необхідності використовується Memcached::getResultCode().
  
Приклад #1 Memcached::getDelayed() example
<?php
$m = new Memcached();
$m->addServer('localhost', 11211);
$m->set('int', 99);
$m->set('string', 'a simple string');
$m->set('array', array(11, 12));
$m->getDelayed(array('int', 'array'), true);
var_dump($m->fetchAll());
?>Поданий вище приклад виведе:
array(2) {
  [0]=>
  array(3) {
    ["key"]=>
    string(3) "int"
    ["value"]=>
    int(99)
    ["cas"]=>
    float(2363)
  }
  [1]=>
  array(3) {
    ["key"]=>
    string(5) "array"
    ["value"]=>
    array(2) {
      [0]=>
      int(11)
      [1]=>
      int(12)
    }
    ["cas"]=>
    float(2365)
  }
}
Actually, when you pass a callback, method doesn't return immediately, but waits for results and calls callback function.