1

チーム、私はワークライト アプリを構築しており、corodova グローバリゼーション API を使用しています。ここで、成功のコールバック関数から、この関数を呼び出している関数に値を返すことができません。ただし、alert() を使用した後に値が返される場合も同じことが機能します。お願いできますか?以下の実装で間違っている場合は修正してください。

Hybrid.formatCurrencyVal = function(sVal){
      var sOut;

         //alert(sVal);
         navigator.globalization.numberToString(
         Number(sVal),
        // function (sVal) {sOut=sVal.value; sVal= sOut;},
         function (sVal) {sOut=sVal.value; sVal=sOut;},
         function () {alert('Error getting number\n');},
         {type:'decimal'}

       ); 
         alert(sOut);





         return sOut;




      };
4

2 に答える 2

2

onSuccess コールバックは非同期で発生します。つまり、「numberToString」を呼び出した後、残りのコードが続行されます。そのため、sOut を返すときに onSuccess 関数が既に起動されているかどうかはわかりません。

代わりに、次のようにする必要があります。

var onSuccess = function(callbackNumber) {
    // do something with callbackNumber
}

navigator.globalization.numberToString(
    number,
    onSuccess,
    function () {alert('Error getting number\n');},
    {type:'decimal'}
);  
于 2013-10-18T01:16:59.130 に答える