async? 是聲明一個異步函數(shù),如? async ()=>{}
await 是等待一個異步方法執(zhí)行,await 執(zhí)行函數(shù)必須出現(xiàn)在 async 內(nèi)部。如
async? function test(){
? ? ?let result =? await? new Promise.resolve('123456');
? ? ? console.log(result); //123456
}
test();
簡單的應(yīng)用:
const test? = function(params){? ?//參數(shù)
? ? ? ? return new Promise((resolve, reject) => {
? ? ? ? ? ? ? ? ? ? ....執(zhí)行方法
? ? ? ? ? ? ? ? ? ? ?resolve(result)? //結(jié)果通過resolve的方式返回
? ? ? ? ? ? ? ? ? ? reject(err)? ? //錯誤通過reject的方式拋出
????????});
}
async? demo () => {
? ? ?let? result = await? test(params);? //result接收返回的處理結(jié)果
}
demo()? ? //執(zhí)行函數(shù)
async? await? 鏈接數(shù)據(jù)庫:(cnpm install mysql --S)
var mysql = require('mysql');
var pool = mysql.createPool({
? ? ? ? host:'127.0.0.1',
? ? ? ? user:'root',
? ? ? ? password:'',
? ? ? ? port:'3306',
? ? ? ? database:''
});
var query = function(sql, values){
? ? ? ? return new Promise((resolve, reject) => {
? ? ? ? ? ? ? ? pool.getConection(function(err, connection){
? ? ? ? ? ? ? ? ? ? ? ? connection.query(sql, function(err,? rows){
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? if(err){
????????????????????????????????????????reject(err);
????????????????????????????????}
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? resolve(rows);
????????????????????????})
????????????????});
????????});
}
async? function demo(){
? ? ? ? let sql = "select 1+1";
? ? ? ? let result = await query(sql);
? ? ? ? console.log(result);? ?// 2
}
demo();
//exports.default = query;
async? ?await? 在koa2.x 路由中的簡單應(yīng)用:(cnpm install koa-router --S/yarn add koa-router)
const? Router = require('koa-router');
const routers = new Router();
const query = require('./mysql.js');
routers.get('/', async (ctx, next) => {
? ? ? ? ? ? ? var sql = "select 1+1";??
? ? ? ? ? ? ? let result = await query(sql);
? ? ? ? ? ? console.log(result);
})
app.use(routers.routes()).use(routes.allowedMethods());
app.listen(3000, ()=>{
? ? ? ? console.log('server port 3000 is runing');
});