精华内容
下载资源
问答
  • Promise使用

    千次阅读 2018-09-15 11:49:17
    //fs.readFile是一个异步函数,如果直接调用,不使用promise,是无法返回结果 const fs = require('fs') function getFileByPath(fpath){ //resolve是成功之后的回调函数,reject是失败之后的回调函数 var promise ...

    1.常用用法

    //promise主要用来解决低于回调问题
    //fs.readFile是一个异步函数,如果直接调用,不使用promise,是无法返回结果
    const fs = require('fs')
    function getFileByPath(fpath){
        //resolve是成功之后的回调函数,reject是失败之后的回调函数
        var promise = new Promise(function (resolve,reject) {
            fs.readFile(fpath,'utf-8',(err,data)=>{
                if(err) return reject(err)
                resolve(data)
            })
    
        })
        return promise
    }
    //在调用的时候通过.then方法来制定成功和失败的回调函数
    getFileByPath('./1.txt').then(function (data) {
        console.log(data)
    },function(err){
        console.log('失败了')
    })

    2.连续读取3个文件

    //连续读取3个文件
    
    const fs = require('fs')
    
    const getFileByPath = function (fpath) {
        return new Promise(function (resolve, reject) {       
                fs.readFile(fpath, 'utf-8', (err, data) => {
                    if (err) return reject(err)
                    resolve(data)
                })
        })
    }
    
    //在上一个then中,返回一个新的promise实例。可以继续用下一个.then来处理
    getFileByPath('1.txt').then(function (data) {
        console.log(data)
        return getFileByPath('2.txt')
    })
    .then(function(data){
        console.log(data)
        return getFileByPath('3.txt')
    })
    .then(function (data) {
        console.log(data)
    
    })

    3.

    //连续读取3个文件
    //前面读取失败,后面继续执行,可以用.then单独执行每一个失败的回调
    const fs = require('fs')
    
    const getFileByPath = function (fpath) {
        return new Promise(function (resolve, reject) {
            fs.readFile(fpath, 'utf-8', (err, data) => {
                if (err) return reject(err)
                resolve(data)
            })
        })
    }
    
    //在上一个then中,返回一个新的promise实例。可以继续用下一个.then来处理
    getFileByPath('11.txt').then(function (data) {
            console.log(data)
    
        }, function (err) {
            console.log('读取失败')
            return getFileByPath('2.txt')
        })
        .then(function (data) {
            console.log(data)
            return getFileByPath('3.txt')
        })
        .then(function (data) {
            console.log(data)
    
        })

    4.

    //连续读取3个文件
    //前面promise执行失败,则立即终止所有promise的执行
    const fs = require('fs')
    
    const getFileByPath = function (fpath) {
        return new Promise(function (resolve, reject) {
            fs.readFile(fpath, 'utf-8', (err, data) => {
                if (err) return reject(err)
                resolve(data)
            })
        })
    }
    
    //在上一个then中,返回一个新的promise实例。可以继续用下一个.then来处理
    getFileByPath('11.txt').then(function (data) {
            console.log(data)
        })
        .then(function (data) {
            console.log(data)
            return getFileByPath('3.txt')
        })
        .then(function (data) {
            console.log(data)
    
        })
        .catch(function (err) {
            console.log('catch方法可以捕获错误并阻止后续的执行')
        })
    展开全文
  • Promise使用.pdf

    2021-09-14 13:27:08
    Promise使用.pdf
  • 主要介绍了JavaScript中的Promise使用详解,promise对象是JS进阶学习中的重要知识点,需要的朋友可以参考下
  • 主要介绍了JavaScript中的Promise使用详解,promise对象是JS进阶学习中的重要知识点,需要了解的朋友可以参考下
  • 主要介绍了异步JavaScript编程中的Promise使用方法,包含Ajax的结合操作等问题,需要的朋友可以参考下
  • 主要介绍了详细解读JavaScript编程中的Promise使用,是JS入门学习中的基础知识,需要的朋友可以参考下
  • node中Promise使用

    2019-07-27 15:38:09
    node中Promise使用实例 需求:现有三个文件需要依次读取文件内容 // a.json { "next": "b.json", "massage": "this is a file content" } b.json { "next": "c.json", "massage": "this b file content" } c....

    node中Promise使用实例

    需求:现有三个文件需要依次读取文件内容

    // a.json
    {
        "next": "b.json",
        "massage": "this is a file content"
    }
    
    b.json
    {
        "next": "c.json",
        "massage": "this b file content"
    }
    
    c.json
    {
        "next": "null",
        "massage": "this c file content"
    }
    

    目录结构:
    在这里插入图片描述

    实现方法如下:

    // 方法一: callback获去文件的内容
    const fs = require("fs")
    const path = require("path")
    
    // 定义一个函数去获取文件内容
    function getFileContent(fileName, callback) {
        const fullFilename = path.resolve(__dirname, "files", fileName)
        fs.readFile(fullFilename, (err, data) => {
            if(err){
                console.error(err)
                return
            }
            // 调用callback函数处理读取到的数据
            callback(
                // readFile中读取的文件内容为buffer因此需要转为字符串
                JSON.parse(data.toString())
            )
        })
    }
    
    getFileContent("a.json", aData => {
        console.log("a data", aData)
        getFileContent(aData.next, bData => {
            console.log("b data", bData)
            getFileContent(bData.next, cData => {
                console.log("c data", cData)
            })
        })
    })
    
    // 方法二: 使用Promise和then连用获取文件内容
    const fs = require("fs")
    const path = require("path")
    
    function getFileContent(fileName) {
        const promise = new Promise((resolve, reject) => {
            const fullFilename = path.resolve(__dirname, "files", fileName)
            fs.readFile(fullFilename, (err, data) => {
                if(err) {
                    reject(err)
                    return
                }
                resolve(
                    JSON.parse(data.toString())
                )
            })
        })
        return promise
    }
    
    // promise后面接 .then 可以获取resolve 里面的内容
    getFileContent("a.json").then(aData => {
        console.log("a data", aData)
        return getFileContent(aData.next)
    }).then(bData => {
        console.log("b data", bData)
        return getFileContent(bData.next)
    }).then(cData => {
        console.log("c data", cData)
    })
    
    // 方法三: 使用async await 和 Promise连用实现同步读取文件
    const fs = require("fs")
    const path = require("path")
    
    function getFileContent(fileName) {
        const promise = new Promise((resolve, reject) => {
            const fullFilename = path.resolve(__dirname, "files", fileName)
            fs.readFile(fullFilename, (err, data) => {
                if(err) {
                    reject(err)
                    return
                }
                resolve(
                    JSON.parse(data.toString())
                )
            })
        })
        return promise
    }
    
    async function readFileData() {
        // 同步
        try {
            const aData = await getFileContent("a.json")
            console.log("a data", aData)
            const bData = await getFileContent(aData.next)
            console.log("b data", bData)
            const cData = await getFileContent(bData.next)
            console.log("c data", cData)
        } catch(err) {
            console.error(err)
        }
    }
    
    readFileData()
    

    注意⚠️:
    async await使用要点:
    // 1. await 后面可以追加 promise 对象,获取 resolve 的值
    // 2. await 必须包裹在 async 函数里面
    // 3. async 函数执行返回的也是一个 promise 对象
    // 4. try-catch 截获 promise 中 reject 的值

    展开全文
  • promise使用场景

    2018-09-08 10:44:51
    1.异步嵌套问题:wx.request是异步操作,需要一个回调函数来接收(success),回调函数中发起一起wx.request请求----回调地狱 ... let promise = new Promise((resolve, reject) => { wx.request({ ur...

    1.异步嵌套问题:wx.request是异步操作,需要一个回调函数来接收(success),回调函数中发起一起wx.request请求----回调地狱

    2.回调函数剥夺return的能力。

    // 实例化一个promise对象
      let promise = new Promise((resolve, reject) => {
        wx.request({
          url: 'XXXXXX',
          success: (res) => {
            resolve(res)
          }
        })
      })
     
      // then接收异步回调结果
      promise.then((res) => {
        console.log(res)
      })
    

     

    展开全文
  • Promise使用经验

    2018-07-27 14:26:04
    ES6中,promise是经常使用的对象。 通过promise实例,可以实现对异步代码的封装,保证当异步代码执行完成后再执行后续处理代码。 Promise的基本使用 resolve函数的结果可以通过then()方法接收,reject函数的结果...

    ES6中,promise是经常使用的对象。
    通过promise实例,可以实现对异步代码的封装,保证当异步代码执行完成后再执行后续处理代码。

    Promise的基本使用

    resolve函数的结果可以通过then()方法接收,reject函数的结果可以被catch()方法接收

          valid(){      
                return new Promise((resolve,reject)=>{
    		    		if(this.flag){
    		    			return resolve(true)
    		    		}
    		    		this.$refs.form.validate((valid) => {
    			    		if(valid){
    			    			resolve(valid)
    				    	}
    				    	else{
    			    			reject(valid);
    			    		}
    		    		})
    		    	})
           }

    因为element-ui中的表单自带validate操作是异步操作,所以我将校验方法封装在Promise实例中,当校验过程结束后调用then方法就可以执行后续的操作。
    当promise对象实例化的时候,就会执行promise内部的代码。
    注意,promise实例只能保证其内部的异步操作执行完成后,再被then或者catch方法捕捉。
    同时,回调函数resolve和reject并不代表内部代码的执行停止
    如下所示。

    let valid = this.valid();
    console.log("第一步")
    valid.then((value)=>{
    
        console.log("第三步")
    
        console.log("校验完成,校验结果无误")
    
    }).catch((error)=>{
    
        console.log("校验校验完成,校验结果有误")
    
    })
    console.log("第二步")

    Promise.all()和Promise.race()

    all和race方法,都是接收一个promise实例数组。
    all方法是按照数组中的顺序进行执行promise操作,race方法并不能确定。
    区别在于,all方法是当所有的promise执行完成后才会进入then或者有一个rejcet后进入catch;而race方法是由第一个promise完成的状态来决定。

    race方法,个人用的比较少,不做多的分享。

    all方法,虽然是按照数组中的promise实例的顺序来执行,但是并不能保证哪个promise先执行完成,所有在必须有先后完成顺序时,建议不要使用all方法

    Promise.resolve()和Promise.reject()

    这两个相当于是实例化promise的一种简约写法

    export const fetch = (url) => {
      return Vue.axios({
        method: 'get',
        url: url,
      }).then(function(response) {
        return Promise.resolve(response.data);
      }).catch((error) => {
        if(error.response.status===302){
            router.push('/login')
            return Promise.reject("登录失效,请重新登录");
        }else{
          return Promise.reject(error.statusText);
        }
      });
    }

    他可以将数据或者方法进行Promsie转换,使他成为promise的一个实例,能被对应的.then和.catch捕获

    展开全文
  • promise使用详解

    2020-06-16 21:56:45
    除了使用Promise构造函数进行链式调用外,Promise还有什么方式进行链式调用吗? Promise.resolve()的参数可以传递什么类型的数据?不同类型的数据产生怎样的结果? Promise的构造函数中调用resolve()/reject()...
  • JS异步请求使用promise进行封装
  • 总结JavaScript编程中的Promise使用

    千次阅读 2015-07-28 08:23:49
    总结JavaScript编程中的Promise使用 Promise核心说明 尽管Promise已经有自己的规范,但目前的各类Promise库,在Promise的实现细节上是有差异的,部分API甚至在意义上完全不同。但Promise的核心内容,是...
  • 漫谈promise使用场景

    2018-02-03 03:02:17
    那么,下面我们就来说一说promise是什么,它能帮助我们解决什么问题,我们应该如何使用它? 这是我个人对promise的理解。欢迎吐槽 :) Promise是什么 promise的意思是承诺,有的人翻译为许愿,但它们代表的都是...
  • var wechat = new Wechat() var data = yield wechat('image', __dirname + '\\.5.jpg', false) Wechat.prototype....## Nodejs,Promise使用时在then中返回Promise报错,不明白这样写为什么报错,求大神指点谢谢!
  • Promise使用手册

    2017-07-15 10:00:53
    本篇以Promise为核心, 逐步展开, 最终分析process.nextTick , promise.then , setTimeout , setImmediate 它们的异步机制.导读Promise问世已久, 其科普类文章亦不计其数. 遂本篇初衷不为科普, 只为能够温故而知新....
  • 文章目录前言一、promise使用及实现、async,await、generator函数的概念二、使用1.Promise2.async,awaitgenerator函数总结 前言 这节课给大家介绍一下promise使用及实现、async,await、generator函数(详解),具体...
  • vue 中 Promise 使用方法

    千次阅读 2020-10-20 21:23:56
    1. Promise 基本概念: Promise是一个构造函数,所以可以 new 出一个Promise的实例; 在Promise上有两个函数 resolve (成功之后的回调函数)和 reject (失败后的回调函数); 在Promise构造函数的prototype属性上,有...
  • promise 基础 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise promises A+规范 https://github.com/promises-aplus/promises-spec PromiseA+规范(中文) ...
  • nodejs中async和promise使用上有什么区别?~~~~~~~
  • ES6中的Promise使用-2

    万次阅读 多人点赞 2019-09-30 13:42:58
    Promise 是一个对象,它代表了一个异步操作的最终完成或者失败。 假设现在有一个名为createAudioFileAsync()的函数,如果给出一些配置和两个回调函数,这个函数能异步地生成音频文件。一个回调函数是文件成功创建时...
  • javascript Promise使用与小结

    千次阅读 2021-02-05 09:34:53
    其实其中大部分问题的核心 就是promise。 简绍 像知道promise 那么有些 关键词也得了解一下。 一、 同步异步 什么是同步异步呢? 害! 别的语言我不是特别了解, 但在js中 有一个代码执行顺序, 正常代码 是由上而下...
  • 微信小程序异步处理promise使用方法

    千次阅读 2018-10-30 15:12:44
    微信小程序异步处理我使用的是promise处理,这样能够让小程序执行起来逻辑更加清晰明了,示例代码如下: let promise1 = new Promise(function (resolve, reject) { wx.getImageInfo({ src: '...
  • H5 Promise使用方法

    千次阅读 2017-08-02 11:04:31
    Promise 承诺 许诺 执行 -> 可以去做 -> 有然后 -> then() -> then(function(){ 发生然后得事 }) 执行 -> 不去做 -> 没有然后 发生异常 -> catch() -> catch(function(){ 理由 })  创建...
  • await搭配promise使用

    千次阅读 2019-06-21 17:48:21
    var b = await new Promise((resolve, reject) => { setTimeout(() => { reject(2) }, 1000) }) } catch (e) { console.log(e) // 第3秒时输出: 2 } // 函数暂停2秒后再继续执行 var sleep = await new ...
  • react promise使用方法

    千次阅读 2019-04-19 22:02:54
    cc = (resolve, reject) => { ... new Promise( this.cc ).then(data => { alert(data) }).catch(function (reason) { console.log('Failed: ' + reason); }); }   <button onClick={this.test}>a
  • vue 的promise使用

    千次阅读 2019-01-07 04:31:10
    文章来自:源码在线https://www.shengli.me/css/540.html    

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 119,178
精华内容 47,671
关键字:

promise如何使用