我一直在node.js中使用when.js作为promises。我有以下功能:
function my_func() {
var d = when.defer();
// Async actions simulated with timeout
setTimeout(function() {
//...
if(error) {
return d.resolve(error);
}
d.resolve(result);
}, 1000)
return d.promise;
}
我会这样称呼:
my_func().then(
function(res) {
//...
},
function(err) {
// Handle error
}
);
如何使用ES6 Promises做同样的事情?
答案 0 :(得分:2)
结构非常相似:
function my_func() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
if (error) {
reject('no');
}
resolve('yes')
}, 1000);
});
}
答案 1 :(得分:2)
您的原始功能在if (error)
条件中出现了一些错误,因此这里有更新的代码段:
function my_func() {
var d = when.defer();
// Async actions simulated with timeout
setTimeout(function() {
//...
if(error) {
d.reject(error);
}
d.resolve(result);
}, 1000)
return d.promise;
}
变成
function my_func() {
return new Promise(function (resolve, reject) {
//Async actions simulated with timeout
setTimeout(function () {
//...
if (error) {
reject(error);
}
resolve(result);
}, 1000);
});
}
中得到了相当好的报道
答案 2 :(得分:1)
//Creating promise
function my_func() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
//...
if(error) {
reject(Error("Error Message"));
}
resolve("Success message")
}, 1000)
});
}
//Using it
my_func().then(function(response){
console.log("Success!", response);
}, function(err){
console.error("Failed!", err);
})