var readInfo = function (fileName) { var defer = q.defer(); fs.readFile(fileName, {encoding:'utf-8'}, function (err, data) { if(err){ defer.reject(err) }else{ defer.resolve(data) } }) return defer.promise; }
readInfo('count.txt') .then(function(data){ console.log("pro::",data) },function(){ })
經過建立一個具備promise屬性的defer對象,若是成功獲取到值則調用defer.resolve(value),若是失敗,則調用defer.reject(reason),最後返回defer的promise屬性便可。這個過程能夠理解爲調用defer.resolve將Promise的狀態變成Fulfilled,調用defer.reject將Promise的狀態變成Rejected。