function getInputPromise() {
return defer.promise;
}
/**
* 当 inputPromise 状态由未完成变成 fulfil 时,调用 function(fulfilled)
* 当 inputPromise 状态由未完成变成 rejected 时,调用 function(rejected)
* 将 then 返回的 promise 赋给 outputPromise
* function(fulfilled) 和 function(rejected) 通过返回字符串将 outputPromise 的状态由
* 未完成改变为 fulfilled
* @private
*/
var outputPromise = getInputPromise().then(function (fulfilled) {
return 'fulfilled';
}, function (rejected) {
return 'rejected';
});
/**
* 当 outputPromise 状态由未完成变成 fulfil 时,调用 function(fulfilled),控制台打印 'fulfilled: fulfilled'。
* 当 outputPromise 状态由未完成变成 rejected, 调用 function(rejected), 控制台打印 'rejected: rejected'。
*/
outputPromise.then(function (fulfilled) {
console.log('fulfilled: ' + fulfilled);
}, function (rejected) {
console.log('rejected: ' + rejected);
});
/**
* 将 inputPromise 的状态由未完成变成 rejected
*/
defer.reject(); // 输出 fulfilled: rejected
/**
* 将 inputPromise 的状态由未完成变成 fulfilled
*/
//defer.resolve(); // 输出 fulfilled: fulfilled
当 function(fulfilled) 或者 function(rejected) 抛出异常时,那么 outputPromise 的状态就会变成 rejected
var Q = require('q');
var fs = require('fs');
var defer = Q.defer();/**
* 通过 defer 获得 promise
* @private
*/
function getInputPromise() {
return defer.promise;
}
/**
* 当 inputPromise 状态由未完成变成 fulfil 时,调用 function(fulfilled)
* 当 inputPromise 状态由未完成变成 rejected 时,调用 function(rejected)
* 将 then 返回的 promise 赋给 outputPromise
* function(fulfilled) 和 function(rejected) 通过抛出异常将 outputPromise 的状态由
* 未完成改变为 reject
* @private
*/
var outputPromise = getInputPromise().then(function (fulfilled) {
throw new Error('fulfilled');
}, function (rejected) {
throw new Error('rejected');
});
/**
* 当 outputPromise 状态由未完成变成 fulfil 时,调用 function(fulfilled)。
* 当 outputPromise 状态由未完成变成 rejected, 调用 function(rejected)。
*/
outputPromise.then(function (fulfilled) {
console.log('fulfilled: ' + fulfilled);
}, function (rejected) {
console.log('rejected: ' + rejected);
});
/**
* 将 inputPromise 的状态由未完成变成 rejected
*/
defer.reject(); // 控制台打印 rejected [Error:rejected]
/**
* 将 inputPromise 的状态由未完成变成 fulfilled
*/
//defer.resolve(); // 控制台打印 rejected [Error:fulfilled]
当 function(fulfilled) 或者 function(rejected) 返回一个 promise 时,outputPromise 就会成为这个新的 promise.









