2016-10-14 15 views
0

ifステートメントが実行される前にマップ関数は常に実行を終了しますか? if文が実行される前に配列の要素が常に加算されるようにしたい。 if文が始まる前にマップ関数が実行を終了していないときに、if文がadd変数の真の値を取得しない時間がありますか?マップ関数は常に最初に実行されます

var arr = [ '33.3%', '33.3%', '33.3%' ]; 
var add = 0; 

arr.map(function(elem){ 
    add += parseInt(parseFloat(elem)*10000) 
}); 

if (add <= 1001000 && add >= 999000) { 
    console.log("passed!!") 
} 
+2

Javascriptをシングルスレッドで、すべてのコードが同期 – adeneo

+0

ヒントであるとはい、マップ機能は、常に、最初に終了します:それは*同期*コールバックの場合**常に**最初に終わるでしょう。 *非同期*コールバックの場合、**常に**後で終了します。それは競争ではなく、それには論理があります。 – deceze

答えて

0

はい。非同期要求やWebWorkerのようなマルチスレッド操作がない限り、コードは同期的です。つまり、厳密な順序で実行されます。

+1

これはコメントではありませんか? – Rajesh

+0

いいえ - 質問に対する答えです。 – Utkanos

+0

'setTimeout'は同期しています... ?!それはマルチスレッドではなく、 "要求"ではありません... – deceze

0

Array.prototype.map of javascript is synchronousですが、asyncの動作が必要な場合は、nodejs async moduleを使用できます。

NodeJS Async地図

var async = require('async'); 

var arr = ['1','2']; 
async.map(arr, getInfo, function (e, r) { 
    console.log(r); 
}); 

function getInfo(name, callback) { 
    setTimeout(function() { 
    callback(null, name + 'new'); 
    }, 1000); 
} 

http://code.runnable.com/UyR-6c2DZZ4SmfSh/async-map-example-for-node-js

+1

'async.map'は" of javascript "です。特に 'Array.prototype.map'を意味する場合は、その名前で呼び出してください。 – Bergi

+0

@Bergi:あなたのコメント、感謝の気持ちが変わった。 – Thalaivar

関連する問題