-1

別の JavaScript 関数でパラメーターとして使用される無名関数によって返される値を取得するにはどうすればよいですか?

次のメソッド呼び出しregisterDeviceでは、その関数スコープ外の無名関数の「ステータス」値を取得したいと考えています。

pushNotification.registerDevice({alert:true, badge:true, sound:true}, function(status) {
  // if successful status is an object that looks like this:
  // {"type":"7","pushBadge":"1","pushSound":"1","enabled":"1","deviceToken":"blablahblah","pushAlert":"1"}
  console.warn('registerDevice:%o', status);    
});
4

1 に答える 1

0

提供された関数が非同期的に呼び出されると仮定すると、その関数がどの時点で呼び出されるかわからないため、その戻り値をそのスコープ外で使用しないでください。

status変数がスコープ内にあるか、それらの後の関数に直接渡される場合、そのコールバック関数内からすべての以降の処理を開始する必要があります。

pushNotification.registerDevice({alert:true, badge:true, sound:true}, function(status) {
    console.warn('registerDevice:%o', status);

    // do stuff with "status"
    func1(status);

    // even put it in a global if you really must
    global.status = status;
});

// processing continues here immediately, you can't access
// "status" here because it won't have been set yet.

console.log(global.status);  //  -- probably undefined
于 2013-05-15T11:44:05.703 に答える