const Koa = require('koa');
const Router = require('koa-router');
const fs = require('fs');
const { promisify } = require('util');
const fsStat = promisify(fs.stat).bind(fs);
const app = Koa();
const router = new Router();
router.get('/audio', async (context) => {
const path = 'sample.mp3';
const { size: filesize } = await fsStat(path);
const range = context.get('range');
context.type = 'audio/mpeg';
if (!range) {
context.length = filesize;
context.body = fs.createReadStream(path);
return;
}
const [startPart, endPart] = range.replace(/bytes=/, '')
.split('-');
const start = parseInt(startPart, 10);
const end = endPart
? parseInt(endPart, 10)
: filesize - 1;
context.length = (end - start) + 1;
context.status = 206;
context.set({
'Accept-Ranges': 'bytes',
'Content-Range': `bytes ${start}-${end}/${filesize}`
});
context.body = fs.createReadStream(path, {
start,
end
});
});
app
.use(router.routes())
.use(router.allowedMethods());
app.listen(8000, () => {
console.log('Listening on port 8000!');
});
app.get('/page', function(req, res, next) {
callback_(function(err, count) {
if (err) {
// Обрабатываем ошибку
return res.status(500).end();
}
console.log(count); // выводит нужный результат
res.render('page', {
postCount: count
});
});
})
var callback_ = function(cb) {
setTimeout(function() {
getPostCount(cb)
}, 5000);
}
var getPostCount = function(cb) {
connection.query("SELECT COUNT(*) FROM posts", function(err, result, fields) {
if (err) return cb(err);
cb(null, result.length);
});
};
const { VK } = require('vk-io');
const vk = new VK({
token: ...
});
// ...
const attachments = await vk.upload.photoAlbum({
source: [path]
});
const groupsList = Array(8).fill().map((_, i) => i + 1);
const groups = await Promise.all(groupsList.map(id => (
api.wall.get({
domain: id,
count: 100,
extended: true,
filter: 'others'
})
)));
Подсказка
Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция fopen wrappers. Смотрите более подробную информацию об определении имени файла в описании функции fopen(). Смотрите также список поддерживаемых оберток URL, их возможности, замечания по использованию и список предопределенных констант в разделе Поддерживаемые протоколы и обертки.
{
"name": "you-library",
"scripts": {
"prepare": "babel src -d lib"
}
}