前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >uni-app 项目记录

uni-app 项目记录

作者头像
达达前端
发布2019-10-18 10:43:41
1K0
发布2019-10-18 10:43:41
举报
文章被收录于专栏:达达前端达达前端

await 等候,等待;期待

什么是async、await await 用于等待异步完成 通常async、await都是跟随Promise一起使用的

async返回的都是一个Promise对象同时async适用于任何类型的函数上。这样await得到的就是一个Promise对象

代码语言:javascript
复制
async function testSync() {
    const response = await new Promise(resolve => {
        setTimeout(() => {
            resolve("async await test...");
         }, 1000);
    });
    console.log(response);
}
testSync();//async await test...
代码语言:javascript
复制
async function asyncAwaitFn(str) {
   return await new Promise((resolve, reject) => {
       setTimeout(() => {
           resolve(str)
       }, 1000);
   })
}

const serialFn = async () => { //串行执行

   console.time('serialFn')
   console.log(await asyncAwaitFn('string 1'));
   console.log(await asyncAwaitFn('string 2'));
   console.timeEnd('serialFn')
}

serialFn();
代码语言:javascript
复制
async function asyncAwaitFn(str) {
   return await new Promise((resolve, reject) => {
       setTimeout(() => {
           resolve(str)
       }, 1000);
   })
}
const parallel = async () => { //并行执行
   console.time('parallel')
   const parallelOne = asyncAwaitFn('string 1');
   const parallelTwo = asyncAwaitFn('string 2')

   //直接打印
   console.log(await parallelOne)
   console.log(await parallelTwo)

   console.timeEnd('parallel')


}
parallel()

await 操作符用于等待一个Promise 对象。它只能在异步函数 async function 中使用。 表达式 一个 Promise 对象或者任何要等待的值。 返回值 返回 Promise 对象的处理结果。如果等待的不是 Promise 对象,则返回该值本身。

await 表达式会暂停当前 async function 的执行,等待 Promise 处理完成。若 Promise 正常处理(fulfilled),其回调的resolve函数参数作为 await 表达式的值,继续执行 async function。

若 Promise 处理异常(rejected),await 表达式会把 Promise 的异常原因抛出。

另外,如果 await 操作符后的表达式的值不是一个 Promise,则返回该值本身。

代码语言:javascript
复制
function resolveAfter2Seconds(x) {
 return new Promise(resolve => {
   setTimeout(() => {
     resolve(x);
   }, 2000);
 });
}

async function f1() {
 var x = await resolveAfter2Seconds(10);
 console.log(x); // 10
}
f1();
代码语言:javascript
复制
async function f2() {
 var y = await 20;
 console.log(y); // 20
}
f2();
代码语言:javascript
复制
async function f3() {
 try {
   var z = await Promise.reject(30);
 } catch (e) {
   console.log(e); // 30
 }
}
f3();

setTimeout,Promise,async/await的区别?

file

file

file

async/await

file

async/ await来发送异步请求,从服务端获取数据

async的用法 它作为一个关键字放到函数前面,用于表示函数是一个异步函数

代码语言:javascript
复制
async function timeout() {
  return 'hello world';
}
代码语言:javascript
复制
async function timeout() {
   return 'hello world'
}
timeout();
console.log('虽然在后面,但是我先执行');

file

代码语言:javascript
复制
async function timeout() {
   return 'hello world'
}
timeout().then(result => {
   console.log(result);
})
console.log('虽然在后面,但是我先执行');

file

控制台中的Promise 有一个resolved,这是async 函数内部的实现原理。

返回一个值 当调用该函数时,内部会调用Promise.solve() 方法把它转化成一个promise 对象作为返回

函数内部抛出错误 就会调用Promise.reject() 返回一个promise 对象

代码语言:javascript
复制
async function timeout(flag) {
   if (flag) {
       return 'hello world'
   } else {
       throw 'my god, failure'
   }
}
console.log(timeout(true))  // 调用Promise.resolve() 返回promise 对象。
console.log(timeout(false)); // 调用Promise.reject() 返回promise 对象。

file

如果函数内部抛出错误, promise 对象有一个catch 方法进行捕获。

代码语言:javascript
复制
timeout(false).catch(err => {
   console.log(err)
})

await是等待的意思 它后面跟着什么呢?

注意await 关键字只能放到async 函数里面

更多的是放一个返回promise 对象的表达式

代码语言:javascript
复制
// 2s 之后返回双倍的值
function doubleAfter2seconds(num) {
   return new Promise((resolve, reject) => {
       setTimeout(() => {
           resolve(2 * num)
       }, 2000);
   } )
}
代码语言:javascript
复制
async function testResult() {
   let result = await doubleAfter2seconds(30);
   console.log(result);
}

file

file

file

代码语言:javascript
复制
const express = require('express');
const app = express();// express.static 提供静态文件,就是html, css, js 文件
app.use(express.static('public'));

app.listen(3000, () => {
   console.log('server start');
})

file

file

file

file

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.10.16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档