2017-08-18 19 views
0

で働いていない待つ TEST1 が TEST2 TEST3 TEST4をFILTERED非同期は、私は、次のコードをしているのforEach

最後にする必要がありますFILTERED (明らかに)。

さまざまなオプションを試しましたが、ここで何かを理解していないようです。あなたは何が起こっているのか気づいていますか?

+0

は、データベースの方法は、実際に約束を返していますか? – Paul

+0

いいえ1つが動作します –

+2

[async/inside for loopを使用する](https://stackoverflow.com/questions/45505517/using-async-await-inside-for-loop)の重複が考えられます。 –

答えて

1

これは正しい動作です。async/awaitは、使用されている機能にのみ影響します。だから、forオペレータに、各要素のためのコールバックを呼び出しforEachを交換する必要があります。

async function goodUsers(users) { 
 
    const filteredUsers = []; 
 

 
    for(user in users) { 
 
    console.log('TEST1'); 
 
    const fromUserContacts = await new Promise(resolve => setTimeout(() => resolve(['c1', 'c2']), 500)); 
 

 
    console.log('TEST2'); 
 
    fromUserContacts.forEach(fromUserContact => { 
 
     console.log('TEST3'); 
 
     filteredUsers.push('json'); 
 
    }); 
 

 
    console.log('TEST4'); 
 
    } 
 

 
    console.log('FILTERED', filteredUsers); 
 
    return filteredUsers; 
 
} 
 

 
goodUsers(['u1', 'u2']);

関連する問題