Node.js用ES6原生Promise對異步函數進行封裝
阿新 • • 發佈:2017-08-10
param http title call 知識共享 reject comment async node
版權聲明:本作品采用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。轉載請註明來源http://blog.csdn.net/azureternite
目錄(?)[+]
Promise的概念
Promise 對象用於異步(asynchronous)計算.。一個Promise對象代表著一個還未完成,但預期將來會完成的操作。
Promise的幾種狀態:
- pending:初始狀態,即等待操作的執行
- fulfilled:成功的操作
- rejected:失敗的操作
pending的狀態既可以轉為fulfilled,也可以轉為rejected,當狀態發生改變時,promise.then(onFulfilled, onRejected)方法將被調用
Promise的基本用法
1.首先創建一個Promise的實例
var promise = new Promise(function(resolve, reject){
//do something
if(success){
resolve(value);
} else {
reject(value);
}
});
用Promise來封裝異步函數
Node.js中的IO操作都是異步的,因此在寫異步程序的過程中容易掉進回調大坑
知道了Promise的基本調用過程,我們就可以用來封裝異步的函數了
1.定義函數
function sendRequest(){
return new Promise(function(resolve, reject){
var req = http.request(options, function(res){
var data = ‘‘;
res.on(‘data‘, function(chunk){
data += chunk;
});
res.on(‘end‘, function(){
//成功後調用
resolve(data);
});
});
req.on(‘error‘, function(err){
//失敗後調用
reject(err);
});
req.end();
});
}
2.調用函數
sendRequest().then(function(data){
console.log(data);
}).catch(function(err){
console.log(err);
});
Node.js用ES6原生Promise對異步函數進行封裝