2016-09-25 6 views
-1

にJSの関数の戻り値が使用可能にしますか?これまでのところ、この関数を呼び出してログに記録すると、arrayOfPastUsersは定義されていません。私は配列にアクセスしたり、別の関数にプルすることで、別の関数と比較できるようにしたいと考えています。は、私が機能を持っている他の機能

return arrayOfPastUsersで追加しようとしたが役に立たなかった。

return new Promise(function(resolve, reject){ resolve(arrayOfPastUsers);)}

+0

なぜ 'Promise'オブジェクトの配列を他のオブジェクトと比較するのですか?あなたの質問に答えるには、アクセスしたいスコープ内の 'arrayOfPastUsers'を宣言してください。 –

+1

あなたは、非同期コードに関連する問題に遭遇します。他のコードがその配列にアクセスできるように手配しても、他のコードがアクセスする前に '.then()'コールバックが呼び出されていることをどのように確認できますか? – Pointy

+0

@ダニエルBそれは私が何を言っている。私は2つの配列を私に与える約束を持っている。私はそれらを1つの配列(arrayOfPastUsers)に結合し、次にその配列を別の関数で利用できるようにして、それを行う方法がわからないようにします –

答えて

1

簡単なアプローチは、あなたの約束の成功コールバックの「arrayOfPastUsers」外を宣言し、それの内側にそれを割り当てることになるそれを解決しなかった:私も行に追加してみました。これにより、外部関数のスコープ内の任意の場所に変数を使用することができます。

0
function container(removePastUsersFromArray){ 
    var arrayOfPastUsers = []; 
    removePastUsersFromArray().then(function(promises){ 

     for(var i = 0; i < promises.length; i++){ 
     for(var j = 0; j < promises[i].length; j++){ 
      arrayOfPastUsers.push(promises[i][j]); 
     } 
    } 
    }) 
    return arrayOfPastUsers ; 
} 

var myArr= new container(removePastUsersFromArray); 

//myArr will be full **after** promise fulfill 

これでクロージャが作成されます。

0

Uは常にグローバル配列にすることができます。

関連する問題