--network host
-p 8080:80
будут игнорироваться. Если контейнер слушает на 80-м порту, это будет именно 80-й порт хоста. Соотв. не получится запустить одновременно несколько одинаковых сервисов в таком режиме. class Order:
def __init__(self, op, amount=0, price=0):
self.__op = op
self.__amount = amount
self.__price = price
@property
def price(self):
return self.__price
@price.setter
def price(self, value):
print("sending info to serverz")
self.__price = value
BUY = "buy"
SELL = "sell"
some_order = Order(SELL, amount=123, price=74.3)
some_order.price = 80.1
then()
— как приклеить стикер на циферблат, где написано, что надо будет сделать, когда время придёт. then()
ничего не попадает «сразу». Вернее, в него сразу передают 2 функции: одну вызовут, когда промис выполнится; вторую – если обломается: .then(onResolve, onError)
await
прячет под капот движка JS лишние провода, и наверху просто возвращает результат выполненной асинхроты. Или кидает Exception в случае облома — его надо ловить обычными try..catch
const requestPromise = new Promise(function(res, rej) {
setTimeout( function(result){ // имитация асинхр запроса куда-то
// тут, типа, наконец получили ответ
if (result.error_code) {
rej(error_code); // облом
} else {
res(result); // обещание выполнено с результатом
}
}, 2000);
});
// здесь requestPromise – это Promise в статусе "pending"
requestPromise.then( // сюда ничего не попадает «сразу». Оно внутри ждёт. Терпеливо.
function(result) {console.log(result, "мы молодцы");},
function(error) {console.error(error, "облом вышел");},
);
При желании можно навесить ещё requestPromise.then(r => console.log("result log:", r));
collision(enemy[i].x,enemy[i].y,player[j].x,player[j].y,32,32,32,32,player.splice(j,1),enemy.splice(i,1));
В функцию передаётся не действие, которое надо выполнить в случае — а его результат. Вот этиplayer.splice(j,1)
enemy.splice(i,1)
выполняются сразу, при первом же обращении — и не останется ни игроков ни врагов. Ядерная зима.collision()
, чтобы там её вызвали только после проверки условий.x, y, w, h
. Так можно передавать сами объекты целиком:function collision(A, B, onCollision) {
if (
A.x + A.w >= B.x
&& A.x <= B.x + B.w
&& A.y + A.h >= B.y
&& A.y <= B.y + B.h
) {
onCollision(); // <-- только тут выполнятся действия
}
}
// ...
player.push({x: 0, y: 0, w: 32, h: 32});
enemy.push({x: 144, y: 104, w: 32, h: 32});
// ...
collision(
enemy[i],
player[j],
function() {
player.splice(j,1);
enemy.splice(i,1);
}
);
// заменить это:
$('#api-cat #song'+id+', #api-wb #song'+id+'').index()
// на это:
($('#api-cat #song'+id+', #api-wb #song'+id+'').index() + 1)
$('h1 em').html([
'Играет',
$('#api-cat #song'+id+', #api-wb #song'+id+'').index() + 1,
'трек из',
$('h1').attr('data'),
'<i class="fa fa-cube"><i>',
].join(' '));
<script>
{
const texts = [
"Фраза 1.",
"Фраза 2.",
];
const selected = texts[Math.floor(Math.random() * texts.length)];
const div = document.createElement('div');
div.innerText = selected;
document.body.appendChild(div);
}
</script>
./Composer
создать Dockerfile с чем-то подобным: FROM composer:latest
VOLUME ./data /data
RUN apt-get update && apt-get install git && git pull trololo && composer install
services:
composer:
build: ./Composer
depends_on
) следующие сервисы.