ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Promise第一天学习(基于B站尚硅谷Promise学习)

2022-01-21 19:35:33  阅读:192  来源: 互联网

标签:fs const 学习 resolve Promise reject 中奖 硅谷


异步操作

  1. fs文件(fs是node下的一个模块,可以对磁盘进行修改)
    require('fs').readFile('./index.html',(err,data)=>{})
    
  2. 数据库操作
  3. Ajax
    $.get('/server',(data)=>{})
    
  4. 定时器
    setTimeout(()=>{},2000);
    

基础特点

  1. 支持链式调用,可以解决回调地狱问题
  2. 指定回调函数的方式更加灵活

promise 初步体验

要求:

  1. 设置按钮进行抽奖
  2. 设置一秒延时
  3. 设置30%概率中奖
  4. 出现结果给出弹窗(含有原生与promise形式实现,主要区别在于JS)
    <!DOCTYPE html>
    
    <html lang="en">
    
    <head>
    
     <meta charset="UTF-8">
    
     <meta http-equiv="X-UA-Compatible" content="IE=edge">
    
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
    
     <title>Document</title>
    
     <style>
    
     button{
    
     width: 200px;
    
     height: 200px;
    
     background-color: blue;
    
     }
    
     </style>
    
    </head>
    
    <body>
    
     <button>点击抽奖</button>
    
     <script>
    
     //生成随机数
    
     function rand(m,n){
    
     //返回向上取整的数值,并控制再m,n之间
    
     return Math.ceil(Math.random() * (n-m+1)) + m + 1 ;
    
     }
    
     //获取元素对象
    
     const btn = document.querySelector('button')
    
     //设置定时器
    
     btn.addEventListener('click',function(){
    
     //Promise对象实例化
    
     //resolve与reject是自定义的两个变量,一般写为这两种
    
     //成功时用resolve,失败时用reject
    
     const p = new Promise((resolve,reject)=>{
    
     setTimeout(() => {
    
     //设置百分之三十的概率中奖
    
     let n = rand(1,100);
    
     if(n<=30){
    
     resolve(); //调用时讲promise的对象设置为成功
    
     }else{
    
     reject(); //调用时讲promise的对象设置为失败
    
     }
    
     },1000)
    
     });
    
     //调用then方法,指定回调函数
    
     p.then((resolve)=>{
    
     alert('恭喜中奖')
    
     },(reject)=>{
    
     alert('再接再厉')
    
     })
    
     })
    
     </script>
    
    </body>
    
    </html>
    

    要求增加:若是成功返回中奖数字

     const p = new Promise((resolve,reject)=>{
    
     setTimeout(() => {
    
     //设置百分之三十的概率中奖
    
     let n = rand(1,100);
    
     if(n<=30){
    
     resolve(n); //调用时讲promise的对象设置为成功
    
     }else{
    
     reject(n); //调用时讲promise的对象设置为失败
    
     }
    
     },1000)
    
     });
    
     //调用then方法,指定回调函数
    
     p.then((value)=>{
    
     alert('恭喜中奖' + value)
    
     },(reason)=>{
    
     alert('再接再厉' + reason)
    
     })
    
     })
    

promise封装fs使用

//创建FS实例对象

const fs = require('fs');

//创建promise对象

let p = new Promise((resolve,reject)=>{

 fs.readFile('./fist.txt',(err,data)=>{

 //如果出错

 if(err){

 reject(err);

 }else{

 resolve(data);

 }

 })

 p.then((value)=>{

 console.log(value.toString());

 },(reason)=>{

 console.log(reason);

 })

})

标签:fs,const,学习,resolve,Promise,reject,中奖,硅谷
来源: https://www.cnblogs.com/mrchenxizhi/p/15831484.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有