2017年6月1日 星期四

Node.js 中使用 Promise Q

如果沒有使用promise,而用callback的方式完成,程式碼大概會是這樣...
task1(function (value1) {      task2(value1, function(value2) {        task3(value2, function(value3) {          //do something with value3...        });      });    });

使用Promise

承上,若使用promise,只要等到目前的工作(task 1)完成,回傳一個訊息告知下一個工作(task 2)可以開始動工,就解決這個callback hell的問題了。
var Q = require('q');,      deferred = Q.defer();    function task1(value1) {    var response = "Complete task with " + value1;    deferred.resolve(response);    return deferred.promise;  };    function task2(value2) {    console.log(value2);  };    task1('Hello World').then(function(success) {    task2(success);  },function(error){    console.log(error);  },function(progress){    console.log(progress);  });  
注意,回傳的promise有三種狀態:
  • 回傳成功:deferred.resolve('resolve')
  • 回傳失敗:deferred.reject('reject')
  • 回傳處理中:deferred.notify('in progress')

沒有留言:

張貼留言