окей я сам решил проблему, но если у кого то есть решение получше, прошу поделиться
мое решение - добавить функцию reset и вызывать ее в конце каждого запроса: function reset(){ cf = { doe_cnt: t4q.H5I, doact: t4q.N40, chknull: function (q) { return (null == q) ? -1 : q; }, getFloatVal: function (Y) { if (cf.chknull(Y) != -1 && !isNaN(Y)) { var b = parseFloat(Y); if (!isNaN(b)) return b.toFixed(2); } return -1; }, cdoa: function (Y) { if (Y) { var v = cf.getFloatVal(Y.alpha), h = cf.getFloatVal(Y.beta), W = cf.getFloatVal(Y.gamma), F = cf.doe_cnt + "," + v + "," + h + "," + W + ";"; cf.doact = cf.doact + F, cf.doe_cnt++; console.log(cf.doact); } } } } |
А нет, не решил, такое решение не подходит
При большом количестве запросов просто не поспевает ресетнутся и некоторые скрипты выполняются с дубликацией |
davisaliw,
function cfFactory() { var cf = { doe_cnt: t4q.H5I, doact: t4q.N40, chknull: function (q) { return (null == q) ? -1 : q; }, getFloatVal: function (Y) { if (cf.chknull(Y) != -1 && !isNaN(Y)) { var b = parseFloat(Y); if (!isNaN(b)) return b.toFixed(2); } return -1; }, cdoa: function (Y) { if (Y) { var v = cf.getFloatVal(Y.alpha), h = cf.getFloatVal(Y.beta), W = cf.getFloatVal(Y.gamma), F = cf.doe_cnt + "," + v + "," + h + "," + W + ";"; cf.doact = cf.doact + F, cf.doe_cnt++; console.log(cf.doact); } } } return cf; } Просто не используйте в таких случаях глобальные переменные. Делайте эту переменную в контексте функции, и передавайте её в другую функцию в качестве параметров. Т.е. в вашем случае должно быть так function cfFactory() { var t4q = { 'H5I': 0, 'N40': "", }; var cf = { doe_cnt: t4q.H5I, doact: t4q.N40, chknull: function (q) { return (null == q) ? -1 : q; }, getFloatVal: function (Y) { if (cf.chknull(Y) != -1 && !isNaN(Y)) { var b = parseFloat(Y); if (!isNaN(b)) return b.toFixed(2); } return -1; }, cdoa: function (Y) { if (Y) { var v = cf.getFloatVal(Y.alpha), h = cf.getFloatVal(Y.beta), W = cf.getFloatVal(Y.gamma), F = cf.doe_cnt + "," + v + "," + h + "," + W + ";"; cf.doact = cf.doact + F, cf.doe_cnt++; console.log(cf.doact); } } }; return cf; } function test(testobj) { var cf = cfFactory(); cf.cdoa(testobj); }; module.exports.test = test; Функция cfFactory всегда возвращает "новую" переменную cf, т.е. другой объект. cfFactory() !== cfFactory() // true |
Оно самое! Спасибо, то что искал!
|
Часовой пояс GMT +3, время: 13:15. |