function myFunc(collback) {
// делаем что то
setTimeout(function() {
// эмуляция запроса на сервер
var response = "Вася Пупкин не авторизован";
// потом вызываем коллбек
collback(response);
}, 2000);
}
// используем так
myFunc(function(resp) {
// выполняется после того, как отработает myFunc()
console.log("Ответ от сервера: ", resp);
});
// Еще можно так
function MyPromise() {}
MyPromise.prototype.done = function(collback) {
if (typeof collback == "function") {
this.collback = collback;
} else {
this.collback.apply(this, arguments);
}
}
function myAnotherFunc() {
var promise = new MyPromise();
// делаем что то
setTimeout(function() {
// эмуляция запроса на сервер
var response = "Вася Пупкин уже авторизован";
// потом вызываем коллбек
promise.done(response);
}, 4000);
return promise;
}
// используем так
myAnotherFunc().done(function(resp) {
// выполняется после того, как отработает myFunc()
console.log("Ответ от сервера: ", resp);
});
// выбираем нужный элемент
var target = document.querySelector('#some-id');
// создаем новый экземпляр наблюдателя
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
console.log(mutation.type);
});
});
// создаем конфигурации для наблюдателя
var config = { attributes: true, childList: true, characterData: true };
// запускаем механизм наблюдения
observer.observe(target, config);
// позже, если надо, прекращаем наблюдение
observer.disconnect();
<form id="myForm">
<input type="text" name="login" placeholder="Login">
<input type="password" name="password" placeholder="Password">
<button type="submit">Отправить</button>
</form>
document.querySelector("#myForm").addEventListener("submit", function(e) {
var data = {}, inputs = this.querySelectorAll("input[name]")
e.preventDefault()
for (var i = 0, length = inputs.length; i < length; i++) {
data[inputs[i].name] = inputs[i].value
}
// auth.php - куда слать данные
ajax("auth.php", data, function(resp) {
// resp - ответ от сервера
alert(resp)
})
});
function ajax(url, data, onsuccess, onerror) {
var request = new XMLHttpRequest()
request.open('GET', url + data && query(data) || '', true)
request.onload = function() {
if (request.status >= 200 && request.status < 400) onsuccess && onsuccess(request.responseText)
else onerror && onerror()
};
request.onerror = onerror || function() {}
request.send()
}
function query(obj) {
var str = "";
for (var prop in obj) {
str && (str += "&") || (str = "?");
if (obj.hasOwnProperty(prop)) str += prop + "=" + obj[prop];
}
return str;
}
<div class="my_element">
<input name="one">
<input name="two">
</div>
<input name="three">
function getNames(selector) {
var names = [];
$(selector).find('[name]').each(function() {
names.push(this.name);
});
return names;
}
var names = getNames('.my_element');
console.log(names); // ['one', 'two']