function asyncLoop(fn, i, end) {
if (i < end) fn(i, () => asyncLoop(fn, i + 1, end));
}
function worker(i, next) {
client.hgetall('space' + i, (err, obj) => {
if (err) return; // break
next();
});
}
asyncLoop(worker, 0, 9);
let p = Promise.resolve();
for (let i = 0; i < 9; i++) {
p = p.then(() => new Promise((resolve, reject) => {
client.hgetall('space' + i, (err, obj) => {
if (err) reject(err); // break
else resolve();
});
}));
}
p.catch(err => console.error(err));
<TestContent name={Test2} />
...
class TestContent extends Component {
render() {
var data={name:"какие-то данные для вывода в выбранном компоненте"};
var Name = this.props.name;
return(
<div>
<Name data={data} />
</div>
)
}
}
const locations = [
{city: "New York"},
{city: "Moscow"}
];
const First = ({city}) => (
<div className="first">
<button data-city={city}>
click
</button>
<p>{city}</p>
</div>
);
const Second = ({city}) => (
<div className="second">
<span>{city}</span>
</div>
);
const list = locations.map((data, i) => <First city={data.city} />);
class TestComponent extends React.Component {
state = {};
handleClick = ({target}) => {
const {city} = target.dataset;
if (city) this.setState({city});
};
render() {
return (
<div onClick={this.handleClick}>
{list}
<Second city={this.state.city} />
</div>
);
}
}
ReactDOM.render(
<TestComponent />,
document.querySelector('[data-role-id="content"]')
);
{
new Date()
.toLocaleTimeString()
.match(/[^:]+|:/g)
.map((e, i) => e == ':' ? <span key={i}>:</span> : e)
}
const skins = {
blue: "blue.css",
brown: "brown.css",
dark_cyan: "dark_cyan.css",
dark_gray: "dark_gray.css",
dark_red: "dark_red.css",
green: "green.css",
light_blue: "light_blue.css",
light_green: "light_green.css",
orange: "orange.css",
pink: "pink.css",
purple: "purple.css",
red: "red.css",
yellow: "yellow.css"
};
const theme = {
skins,
current: {
skin: skins.blue
}
};
module.exports = {
theme,
customization: {
src: "src/styles/*",
dist: "styles"
},
vendor: {
theme: {
bootstrap: "src/vendor/theme/html/bootstrap/css/bootstrap.css",
"font-awesome": "src/vendor/theme/html/fonts/font-awesome/css/font-awesome.css",
fontello: "src/vendor/theme/html/fonts/fontello/css/fontello.css",
"rs-plugin-settings": "src/vendor/theme/html/plugins/rs-plugin/css/settings.css",
"rs-plugin-extralayers": "src/vendor/theme/html/plugins/rs-plugin/css/extralayers.css",
"magnific-popup": "src/vendor/theme/html/plugins/magnific-popup/magnific-popup.css",
animations: "src/vendor/theme/html/css/animations.css",
"owl-carousel": "src/vendor/theme/html/plugins/owl-carousel/owl.carousel.css",
"core-style": "src/vendor/theme/html/css/style.css",
skin: "src/vendor/theme/html/css/skins/" + theme.current.skin
}
},
templates: {
lp_v1: [
"bootstrap", "font-awesome", "fontello", "rs-plugin-settings", "rs-plugin-extralayers", "magnific-popup",
"animations", "owl-carousel", "core-style", "skin"
]
}
};
getCounter(cb) {
let xhr = new XMLHttpRequest();
let api = 'https://vk.com/share.php?act=count&index=1&url=' + encodeURIComponent(this.url);
xhr.open('GET', api, true);
xhr.send();
xhr.onreadystatechange = () => {
if (this.readyState != 4) return;
if (this.status != 200) {
console.log('Vkontakte provider error: ' + (this.status ? this.statusText : 'response not send!'));
return;
}
let obj = this.responseText.match(/^VK\.Share\.count\(\d, (\d+)\);$/)[1] / 1;
cb(obj);
}
}
new Vkontakte().getCounter(count => console.log(count));
getCounter() {
return new Promise((resolve, reject) => {
let xhr = new XMLHttpRequest();
let api = 'https://vk.com/share.php?act=count&index=1&url=' + encodeURIComponent(this.url);
xhr.open('GET', api, true);
xhr.send();
xhr.onreadystatechange = () => {
if (this.readyState != 4) return;
if (this.status != 200) {
console.log('Vkontakte provider error: ' + (this.status ? this.statusText : 'response not send!'));
return;
}
let obj = this.responseText.match(/^VK\.Share\.count\(\d, (\d+)\);$/)[1] / 1;
resolve(obj);
}
});
}
new Vkontakte().getCounter().then(count => console.log(count));
const {get} = require('http');
const {Iconv} = require('iconv');
const {parseString} = require('xml2js');
const {inspect} = require('util');
get('http://www.cbr.ru/scripts/XML_daily.asp', res => {
const data = [];
res
.pipe(new Iconv('cp1251', 'utf8'))
.on('data', chunk => data.push(chunk))
.on('end', () =>
parseString(
Buffer.concat(data),
(err, res) => console.log(inspect(res, {depth: null}))
)
);
});
loader: 'babel-loader',
include: [
path.resolve(__dirname, './src'),
]
const data = [
[42, 'red'],
[44, 'red'],
[42, 'green'],
[44, 'green'],
[46, 'green'],
[42, 'blue'],
[46, 'blue']
];
data.reduce((s, [size, color]) => {
if (size == selectedSize) s.add(color);
return s;
}, new Set());
$ browserify --node server.js -t [ babelify --presets [ babili ] ] $(node -p 'Object.keys(require(`./package.json`).dependencies).map(e => `--exclude ${e}`).join(` `)') -o server.min.js
var d = new Date(2016, 10, 20);
var end = new Date(2017, 0, 20);
var dates = [];
while (d <= end) {
dates.push(d.toLocaleDateString());
d.setDate(d.getDate() + 1);
}