promise

廉价感情. 提交于 2020-04-06 18:21:59

一个封装了异步操作的Promise对象实际上并没有做任何事件,它仅仅针对回调函数的不同结果定义了不同的状态 。 resolve和reject方法也没有做多余的操作,仅仅是把异步结果传递出去而已,对于异步结果的处理,是交给then方法来完成的。 使用then方法来完成

var fs = require('fs')

function readFile_promise(path){
  return new Promise(function(resolve,reject){
     fs.readFile(path,'utf-8',function(err,data){
       if(data){
          resolve(data)
       }else{
           reject(err)
       }
    }) 
  })
}

var promise = readFile_promise('./abc.txt');

promise.then(function(data){
    //success
},function(err){
   //fail
})

then方法总是返回一个新的promise对象 ,这就表示可以多次then,由于默认返回的Promise是个空对象 ,除非做些额外的操作,否则这操作得不到有意义的值。

var promise = readFile_promise('./abc.txt');

promise.then(function(data){
    //success
})
.then(function(value){  //再次调用then
   console.log(value)   //undefined  没意义 
})

可以在回调函数里定义个新的Promise 然后Return返回。

var promise = readFile_promise('./abc.txt');

promise.then(function(data){
    //success
    return readFile_promise('./bb.txt');
})
.then(function(value){  //再次调用then
   console.log(value)   //'bb.txt' 这样就可以获取另一个异步操作的结果了
})

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!