get请求的接收
const Koa = require('koa');
const app = new Koa();
app.use(async (ctx) => {
let url = ctx.url;
let req_query = ctx.query;
let req_querystring = ctx.querystring;
ctx.body = {
url,
req_query,
req_querystring
}
});
app.listen(3000, () => {
console.log('[demo] server is starting at port 3000');
})
输出结果:

async/await
await必须放在async中
async:异步方法,await:接收异步方法返回的值(异步方法返回的值是:Promise异步对象)
async function testAsync(){
return 'Hello async';
}
const result = testAsync();
console.log(result);
//Promise { 'Hello async' }
function takeLongTime() {
return new Promise(resolve => { //直接返回一个 Promise 异步对象
setTimeout(() => {
resolve('long_time_value');
}, 1000);
});
}
async function test() {
const v = await takeLongTime();
console.log(v);
}
test();
promise对象的使用
let state = 1;
function step1(resolve, reject) {
console.log('1.洗菜');
if(state == 1) {
resolve('洗菜完成');
} else {
reject('洗菜错误');
}
}
function step2(resolve, reject) {
console.log('2.吃饭');
if(state == 1) {
resolve('吃饭完成');
} else {
reject('吃饭错误');
}
}
function step3(resolve, reject) {
console.log('3.洗碗');
if(state == 1) {
resolve('洗碗完成');
} else {
reject('洗碗错误');
}
}
new Promise(step1).then(function(val) { //new promise(step1).then().then().then()
console.log(val);
return new Promise(step2);
}).then(function(val) {
console.log(val);
return new Promise(step3);
}).then(function(val) {
console.log(val);
})
const Koa = require('koa')
const app = new Koa()
app.use( async ( ctx ) => { //ctx 相当于上下文对象(this是对上下文对象的引用)
ctx.body = 'hello koa2'
})
app.listen(3000)
console.log('[demo] start-quick is starting at port 3000')