一个线程里有5个task 实现 处理完一个task添加下一个task 的功能
function promise(a) {
return new Promise(function (res, rej) {
b = a + 1;
res(b)
})
}
for (var j = 0; j < 2; j++) {
promise(j).then(res => console.log(res))
}
闭包无限调用 foo(1)(3)(4)
function foo(a) {
function s(b) {
a = a + b;
return s;
}
s.toString = function () {
return a;
}
return s;
}
console.log(foo(1)(2)(3)(8))
indexOf
var aa = "abc";
var bb = 'aaccabcaa';
var index = -1;
var a = aa.split('')
var b = bb.split('')
b.forEach((v, i) => {
if (v == a[0]) {
var ind = i;
var one = i + 1;
var two = i + 2;
if (b[one] == a[1] && b[two] == a[2]) {
index = i;
}
}
})
console.log(index)
// server.js
const path = require("path");
const Koa = require("koa");
const app = new Koa();
const cors = require('koa-cors')
const index = require("./router/index");
app.use(cors())
app.use(index.routes(), index.allowedMethods());
app.listen(3000, () => {
console.log("http://localhost:3000/");
});
// router => index.js
const router = require("koa-router")();
const mysql = require("mysql");
let koaBody = require("koa-body")({ multipart: true });
let db = mysql.createPool({
host: "地址",
user: "用户名",
password: "密码",
database: "数据库",
port: "端口"
});
let query = async (sql, values) => {
return new Promise((reslove, reject) => {
db.getConnection((err, connection) => {
if (err) {
reslove(err);
} else {
connection.query(sql, values, (err, rows) => {
if (err) {
reject(err);
} else {
reslove(rows);
}
connection.release();
});
}
});
});
};
let requestData = ctx => {
return ctx.request.body;
};
router.post("/task/list", koaBody, async (ctx, next) => { // 查询列表
if (requestData(ctx).search) {
let sql = "select * from task where id like ? or title like ? or cate_id like ? or bj_id like ? or intimacy like ? or award_plat_coin_amount like ? or award_bj_coin_amount like ? and cate_id = 1 or cate_id = 2 LIMIT ?,20";
await query(sql, [`%${requestData(ctx).search}%`, `%${requestData(ctx).search}%`, `%${requestData(ctx).search}%`, `%${requestData(ctx).search}%`, `%${requestData(ctx).search}%`, `%${requestData(ctx).search}%`, `%${requestData(ctx).search}%`, (requestData(ctx).page - 1) * 20]).then(res => {
ctx.body = { code: 20000, data: { list: res } };
})
} else {
let sql = "select * from task where cate_id = 1 or cate_id = 2 LIMIT ?,20"
await query(sql, [(requestData(ctx).page - 1) * 20]).then(res => {
ctx.body = { code: 20000, data: { list: res } };
})
}
});
router.post("/task/length", koaBody, async (ctx, next) => { // 查询列表长度
if (requestData(ctx).search) {
let sql = "select count(*) from task where id like ? or title like ? or cate_id like ? or bj_id like ? or intimacy like ? or award_plat_coin_amount like ? or award_bj_coin_amount like ? and cate_id = 1 or cate_id = 2";
await query(sql, [`%${requestData(ctx).search}%`, `%${requestData(ctx).search}%`, `%${requestData(ctx).search}%`, `%${requestData(ctx).search}%`, `%${requestData(ctx).search}%`, `%${requestData(ctx).search}%`, `%${requestData(ctx).search}%`]).then(res => {
ctx.body = { code: 20000, data: { length: res[0]['count(*)'] } };
})
} else {
let sql = "select count(*) from task where cate_id = 1 or cate_id = 2"
await query(sql).then(res => {
ctx.body = { code: 20000, data: { length: res[0]['count(*)'] } };
})
}
})
router.post("/task/delete", koaBody, async (ctx, next) => {// 删除
let sql = "delete from task where id = ?";
await query(sql, [requestData(ctx).id]).then(res => {
if (res) {
ctx.body = { code: 20000, data: '删除成功' }
} else {
ctx.body = { code: 20001, data: '删除失败' }
}
})
})
router.post("/task/edit", koaBody, async (ctx, next) => { // 更新
let sql = "update task set title = ?, platform_id = ?, bj_id = ?, intimacy = ?, award_bj_coin_amount = ?, award_plat_coin_amount = ?, start_at = ?, end_at = ? where id = ?";
try {
await query(sql, [requestData(ctx).title, requestData(ctx).platform_id, requestData(ctx).bj_id, requestData(ctx).intimacy, requestData(ctx).award_bj_coin_amount, requestData(ctx).award_plat_coin_amount, requestData(ctx).start_at, requestData(ctx).end_at, requestData(ctx).id]).then(res => {
ctx.body = { code: 20000, data: '修改成功' }
})
} catch (error) {
console.log(error)
}
})
router.post("/task/add", koaBody, async (ctx, next) => { // 添加
let sql = "insert into task (title, platform_id, bj_id, intimacy, award_bj_coin_amount, award_plat_coin_amount, start_at, end_at) values (?,?,?,?,?,?,?,?)"
try {
await query(sql, [requestData(ctx).title, requestData(ctx).platform_id, requestData(ctx).bj_id, requestData(ctx).intimacy, requestData(ctx).award_bj_coin_amount, requestData(ctx).award_plat_coin_amount, requestData(ctx).start_at, requestData(ctx).end_at]).then(res => {
ctx.body = { code: 20000, data: '添加成功' }
})
} catch (error) {
console.log(error)
}
})
rem 原理
概念:
- 物理像素(physical pixel) 一个物理像素是显示器(手机屏幕)上最小的物理显示单元,可以理解为我们平时说的分辨率。
- 设备独立像素(density-independent pixel) 设备独立像素(也叫密度无关像素),可以认为是计算机坐标系统中得一个点,这个点代表一个可以由程序使用的虚拟像素(比如: css像素),然后由相关系统转换为物理像素,在这里可以理解为我们说的视觉视口的大小;
- 设备像素比(device pixel ratio) 物理像素和设备独立像素之间存在着一定的对应关系,这就是接下来要说的设备像素比。
- 设备像素比(简称dpr)定义了物理像素和设备独立像素的对应关系,它的值可以按如下的公式的得到: 设备像素比 = 物理像素 / 设备独立像素 // 在某一方向上,x方向或者y方向
设备像素比也是设备生产的时候设置好的,在javascript中,可以通window.devicePixelRatio获取到当前设备的dpr。
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum=1, user-scalable=no">
</head>
<script>
!function (n) {
var e = n.document,
t = e.documentElement,
i = 720,
d = i / 100,
o = "orientationchange" in n ? "orientationchange" : "resize",
a = function () {
var n = t.clientWidth || 320; n > 720 && (n = 720),
t.style.fontSize = n / d + "px"
}
e.addEventListener && (n.addEventListener(o, a, !1)), e.addEventListener("DOMContentLoaded", a, !1)
}(window)
</script>