// getResource() это должна быть некая функчия, которая делает асинхронный запрос к серверу и возвращает thenable объект:
// раз - https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Promise/resolve
// два - https://ru.stackoverflow.com/questions/877248/%D0%A7%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-thenable-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82
// тут мы запрашиваем обращаемся к серверу, при этом запрос может быть выполнен как очень быстро так и очень медленно а так же он может быть вообще не выполнен (зависит от загруженности сети, состояния и загруженности сервера)
const promise = getResource()
// тут мы конечно можем делать синхронные операции,но так как они синхронные, то пока они не отработают выполнение кода дальше не двинется.
// тут мы просто говорим, что ждем пока сделанный запрос на сервер не вернет данные код, находящийся далее не исполнять. Начнет его исполнять только после получения данных, сколько бы запрос к серверу не длился (в разумных пределах конечно. Существуют различные таймауты на установку соединения, на ожидание ответа и т.д.). При этом пока исполнение кода в данном блоке находится как бы на паузе, интерпретатор может выполнять другие задачи имеющиеся в eventloop. Таким образом достигается стиль написания кода, похожий на синхронный но являющийся асинхронным.
await promise
// класс для очереди
class Queue{
constructor(interval=1000) {
this.list = [];
setInterval(()=>{
const item = this.list.shift();
if( item && item.cb && typeof item.cb === "function" ){
item.cb(...item.params);
}
},interval);
}
addTask(cb, ...params){
this.list.push({cb:cb, params:params});
}
}
// экземпляр класса для очеред. устанавливаем интервал срабатывания 2 секунды
const queue = new Queue(2000);
// links - ваш мап
links.forEach(b => {
// хз как вы используете b, в вашем коде это не показано
queue.addTask(()=>{
// но вы вполне можете использовать ваше b тут
fetchDonor();
});
});
fetchDonor();
должен либо отдавать промис, либо принимать колбэк, который будет выполнятся по завершении работы fetchDonor();
const users = [
{
id: '1',
firstName: 'Марк',
lastName: 'Визельман',
email: 'mark@gmail.com'
},
{
id: '2',
firstName: 'Кирилл',
lastName: 'Давсон',
email: 'kirill@gmail.com'
},
{
id: '3',
firstName: 'Виктор',
lastName: 'Ганеш',
email: 'victor@gmail.com'
}
]
const usersList = users.map(item=>item.firstName+" "+item.lastName+" "+item.email);
var isMomHappy = false;
if (isMomHappy) {...}
else {
reject( new Error('mom is not happy') );
}
reject( new Error('mom is not happy') );
willIGetNewPhone.catch(err=>{
console.log(err.message);
});
'use strict';
var promise = new Promise((resolve,reject)=>{
reject(new Error("провал"));
});
'use strict';
var promise = new Promise((resolve,reject)=>{
reject(new Error("провал"));
});
promise.catch(err=>{
console.log(err.message);
});
$( function() {
$( "#slider-range-min" ).slider({
range: "min",
value: 500,
step: 100,
min: 0,
max: 10000,
slide: function( event, ui ) {
$( "#amount" ).val( ui.value );
document.getElementById('amount1').innerHTML=ui.value*3.3;
}
});
$( "#amount" ).val( $( "#slider-range-min" ).slider( "value" ) );
} );
var arr1 = [[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]];
var arr2 = [[10, 20, 30, 40], [50, 60, 70, 80], [90, 100, 110, 120]];
var arr3 = [[100, 200, 300, 400], [500, 600, 700, 800], [900, 1000, 1100, 1200]];
function summ_array(...arrs){
return arrs.reduce((acc,arr)=>{
if( Array.isArray(arr))
arr.forEach((subarr, i)=>{
if(!Array.isArray(acc[i]))
acc[i] = []
if( Array.isArray(subarr))
subarr.forEach((v, j)=>{
if(!acc[i][j])
acc[i][j] = 0;
acc[i][j]+=v;
});
});
return acc;
},[]);
}
var summ = summ_array(arr1, arr2, arr3);
console.log(summ);