{"request": {"x": 123, "y": 123.45}, "id": "1234567"}
, где id должен быть достаточно уникальным в пределах вебсокета. Например, последовательность натуральных чисел.{"response": {"x": 321, "y": 45.321}, "id": "1234567"}
class WSHandler {
constructor(ws) {
this.ws = ws;
this.sequence = 0;
this.waiters = {};
}
onMessage(event) {
const { data } = event;
const { id } = data;
if (!this.waiters[id]) {
throw new Error(`No waiter for response #${id} was found`);
}
this.waiters[id](data.response);
delete this.waiters[id];
}
sendRequest(requestData) {
const id = this.sequence++
const msg = {id, request: requestData};
this.ws.send(msg);
return new Promise(resolve => {
this.waiters[id] = resolve;
});
}
}
...
const handler = new WSHandler(new WebSocket('wss://...'));
const response = await handler.sendRequest({"hello": "world"});
new Vue({
el: "#app",
router,
store,
beforeCreate() {
this.$http
.jsonp(getURL(method, { offset: 1, album_id: 0, extended: 1 }))
.then(response => {
return response.json();
})
.then(data => {
return data.response.items.map(items => {
///
return items;
});
})
.then(data => {
this.$store.dispatch("getData", data);
});
{
<template>, <script>, <style>
, а браузер такого не понимает, поэтому нужны специальные инструменты для его разбора.for(var i = 0; i < diaryIcons.length; i++){
return images('./' + diaryIcons[i].name + ".png")
}
export default function () {
return {
title: '',
hash: '',
end: {
isEnd: 0,
type: 0
}
}
}
import emptyBlock from 'emptyBlock'
let block = emptyBlock()
{ ...someObject }
, объекты которые содержал someObject
остаются теми же и при любой их мутации у всех владельцев ссылки на объект он меняется.mounted() {
this.showPreloader = true
this.$http.get('/someUrl').then(response => {
// данные загружены, убираем прелоадер
this.showPreloader = false
// записываем полученные данные куда-либо
this.someData = response.body
}, response => {
// запрос завершился ошибкой
// показываем сообщение об ошибке
this.showPreloader = false
this.showError = true
});
},
mounted() {
this.showPreloader = true
Promise.all([
this.$http.get('/someUrl'),
this.$http.get('/someUrl2')
]).then(results => {
// данные загружены, убираем прелоадер
this.showPreloader = false
}, response => {
// один или несколько запросов завершились с ошибкой
// показываем сообщение об ошибке
this.showPreloader = false
this.showError = true
});
},