Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 06.07.2017, 15:05
Интересующийся
Отправить личное сообщение для davisaliw Посмотреть профиль Найти все сообщения от davisaliw
 
Регистрация: 03.07.2017
Сообщений: 12

Сообщение от EmperioAf Посмотреть сообщение
var check = {
    cn_el: ''
};
function hardWork(n /* string */) {
    check.cn_el = '';
    for (var el of n) {
        check.cn_el += el;
    }
    return check.cn_el
}

console.log(hardWork('234')); // '234'
console.log(check) // {cn_el: '234'}
console.log(hardWork('345')); // '345'
console.log(check) // {cn_el: '345'}
console.log(hardWork('456')); // '456'
console.log(check) // {cn_el: '456'}

Ладно, у меня получилось сделать:
script.js - главный:

var http = require('http'),
util = require('util'),
url = require('url'),
hash = require('./hash');

var server = http.createServer(function(req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});

var Y = {
	alpha: null,
	beta: null,
	gamma: null
}
hash.test(Y);

});

server.listen(8080);


hash.js - второй.

var t4q ={
	    'H5I': 0,
		'N40': "",
},
		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);
                }
        }
	};
		
function test(testobj){
	cf.cdoa(testobj);
};

module.exports.test = test;


делаем несколько гет запросов:


Что должно быть:


Повторяю, в скрипте очень много переменных и с каждой работать не вариант.

Последний раз редактировалось davisaliw, 06.07.2017 в 15:09.
Ответить с цитированием
  #12 (permalink)  
Старый 06.07.2017, 16:14
Интересующийся
Отправить личное сообщение для davisaliw Посмотреть профиль Найти все сообщения от davisaliw
 
Регистрация: 03.07.2017
Сообщений: 12

окей я сам решил проблему, но если у кого то есть решение получше, прошу поделиться

мое решение - добавить функцию 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);
                }
        }
	}
}
Ответить с цитированием
  #13 (permalink)  
Старый 06.07.2017, 20:39
Интересующийся
Отправить личное сообщение для davisaliw Посмотреть профиль Найти все сообщения от davisaliw
 
Регистрация: 03.07.2017
Сообщений: 12

А нет, не решил, такое решение не подходит
При большом количестве запросов просто не поспевает ресетнутся и некоторые скрипты выполняются с дубликацией
Ответить с цитированием
  #14 (permalink)  
Старый 06.07.2017, 21:37
Аватар для EmperioAf
Профессор
Отправить личное сообщение для EmperioAf Посмотреть профиль Найти все сообщения от EmperioAf
 
Регистрация: 15.01.2015
Сообщений: 622

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

Последний раз редактировалось EmperioAf, 06.07.2017 в 21:51.
Ответить с цитированием
  #15 (permalink)  
Старый 06.07.2017, 23:48
Интересующийся
Отправить личное сообщение для davisaliw Посмотреть профиль Найти все сообщения от davisaliw
 
Регистрация: 03.07.2017
Сообщений: 12

Оно самое! Спасибо, то что искал!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Input type="time" + JS +Safari (iPhone) dpts Opera, Safari и др. 0 21.09.2016 07:24
узнать значения всех переменных после загрузки friend Events/DOM/Window 3 30.12.2015 18:36
Множественные значения в input - ЗА ВОЗНАГРАЖДЕНИЕ! Pb160 Events/DOM/Window 0 03.08.2015 12:29
Как и где задать цикл? Blondinka Events/DOM/Window 2 10.06.2014 15:29
return значения сразу двух переменных ilmel Общие вопросы Javascript 2 17.08.2013 15:12