国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

node.js中使用q.js實現api的promise化

2024-05-06 16:08:52
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了node.js中使用q.js實現api的promise化,promise一個標準,它描述了異步調用的返回結果,包括正確返回結果和錯誤處理,需要的朋友可以參考下
 
 

關于啥是promise以及promise解決的是啥問題,敬請體驗node的回調異步編碼大法,順帶移步http://wiki.commonjs.org/wiki/Promises/A 看看是咋定義的,在此不再贅述。

這里我們看看怎么用q.js 實現node api的promise。

一、萬事開始皆為install

 

復制代碼代碼如下:

npm install q

 

二、標準node style api 的promise化方法

1、使用Q.nfcall

相對于Q.fcall ,Q.nfcall 就是node 的Q.fcall。

 

復制代碼代碼如下:

var FS = require('fs'),
    Q   = require('q'),
    colors = require('colors'),
    file = 'example.txt';
var fsReadFile = Q.nfcall(FS.readFile,file,encoding);
fsReadFile.then(function(result){
console.log((“invoke in nfcall ” + file).red);
console.log(result.green);
},function(error){
console.log(“invoke in nfcall”.red);
console.log(error.toString().red);
}
);

 

2、使用Q.denodeify

 

復制代碼代碼如下:

var fsReadFile_denodeify = Q.denodeify(FS.readFile);
 
fsReadFile_denodeify(file,encoding).then(function(result){
    console.log("invoke in denodeify".red);
    console.log(result.green)
},function(error){
    console.log("invoke in denodeify".red);
    console.log(error.toString().red);
}
);

 

3、使用Q.deferd

 

復制代碼代碼如下:

var fsReadFile_deferd = function(file,encoding){
    var deferred = Q.defer();
    FS.readFile(file,encoding,function(error,result){
    if(error){
        deferred.reject(error.toString().red);
    }
    deferred.resolve(result);
});
 
return deferred.promise;
};
 
fsReadFile_deferd(file).then(function(result){
    console.log("invoke in deferd".red);
    console.log(result.toString().green);
},function(error){
    console.log("invoke in deferd".red);
    console.log(error.toString().red);
}
);

 

4、使用makeNodeResolver()

 

復制代碼代碼如下:

var fsReadFile_makeNodeResolver = function(file,encoding){
    var deferred = Q.defer();
    FS.readFile(file,encoding,deferred.makeNodeResolver());
    return deferred.promise;
};
 
fsReadFile_makeNodeResolver(file,encoding).then(function(result){
    console.log("invoke in makeNodeResolver".red);
    console.log(result.green);
},function(error){
    console.log(error.toString().red);
});

 

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 奉贤区| 宿迁市| 阿拉善盟| 长岛县| 宾川县| 深水埗区| 屏东县| 江门市| 衡南县| 多伦县| 大渡口区| 安泽县| 黄梅县| 苍梧县| 班戈县| 甘肃省| 平果县| 建昌县| 淳安县| 平乡县| 治多县| 马边| 安龙县| 从江县| 页游| 秦安县| 五华县| 武乡县| 九江市| 周至县| 嵊泗县| 南安市| 开平市| 海盐县| 资源县| 鞍山市| 象州县| 隆德县| 靖江市| 拉萨市| 边坝县|