2016-10-14 2 views
0

Будет ли функция карты всегда заканчиваться до выполнения оператора if? Я хочу убедиться, что элементы в массиве всегда добавляются до выполнения инструкции if. Будет ли когда-нибудь время, когда функция карты не закончит выполнение до начала инструкции if, и поэтому оператор if не получит истинное значение переменной добавления?Будет ли всегда выполняться моя функция отображения карты?

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

Да. Если у вас нет асинхронных запросов или многопоточных операций, таких как WebWorkers, ваш код является синхронным, т. Е. Выполняется в строгом порядке.

+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' также является« javascript ». Если вы специально подразумеваете 'Array.prototype.map', позвоните по этому имени. – Bergi

+0

@Bergi: Я имел в виду ваш комментарий, спасибо, изменено. – Thalaivar

Смежные вопросы