将回调代码转换为 promise
Convert callback code to promise
我想使用 bluebird 库,我的问题是如何将以下代码转换为 bluebird promise
var exec = require('child_process').exec;
var cmd = 'npm install morgan --save';
exec(cmd, function(error, stdout, stderr) {
if(error || stderr){
console.error(error);
console.error(stderr);
console.log("test");
}
});
很简单,只需要使用 bluebird promise 构造器即可:
var Promise = require("bluebird");
var exec = require('child_process').exec;
var cmd = 'npm install morgan --save';
var promise = new Promise(function(resolve, reject){
exec(cmd, function(error, stdout, stderr) {
if(error || stderr) return reject(error || stderr);
return resolve(stdout);
});
});
promise
.then(console.log.bind(console)) //success handler
.catch(console.log.bind(console)) // failure handler
请不要使用 promise 构造函数。请。我已经浪费了数十个小时的调试代码,而人们却错过了 这只是一件事。
Bluebird 很乐意自动为您承诺,它会更快地完成并更容易调试。
var Promise = require("bluebird");
var exec = Promise.promisify(require('child_process').exec);
var cmd = 'npm install morgan --save';
exec(cmd).spread(function(stdout, stderr){
// access output streams here
console.log(stdout, stderr); // output both stdout and stderr here
}).catch(function(error){
// handle errors here
});
将来我们有一个规范的参考来将事物转换为承诺。还有一个list of how-tos here。
我想使用 bluebird 库,我的问题是如何将以下代码转换为 bluebird promise
var exec = require('child_process').exec;
var cmd = 'npm install morgan --save';
exec(cmd, function(error, stdout, stderr) {
if(error || stderr){
console.error(error);
console.error(stderr);
console.log("test");
}
});
很简单,只需要使用 bluebird promise 构造器即可:
var Promise = require("bluebird");
var exec = require('child_process').exec;
var cmd = 'npm install morgan --save';
var promise = new Promise(function(resolve, reject){
exec(cmd, function(error, stdout, stderr) {
if(error || stderr) return reject(error || stderr);
return resolve(stdout);
});
});
promise
.then(console.log.bind(console)) //success handler
.catch(console.log.bind(console)) // failure handler
请不要使用 promise 构造函数。请。我已经浪费了数十个小时的调试代码,而人们却错过了 这只是一件事。
Bluebird 很乐意自动为您承诺,它会更快地完成并更容易调试。
var Promise = require("bluebird");
var exec = Promise.promisify(require('child_process').exec);
var cmd = 'npm install morgan --save';
exec(cmd).spread(function(stdout, stderr){
// access output streams here
console.log(stdout, stderr); // output both stdout and stderr here
}).catch(function(error){
// handle errors here
});
将来我们有一个规范的参考来将事物转换为承诺。还有一个list of how-tos here。