Javascript 从when.js迁移到ES6承诺
我一直在使用when.js来表示node.js中的承诺。我的函数如下所示:Javascript 从when.js迁移到ES6承诺,javascript,node.js,es6-promise,when-js,Javascript,Node.js,Es6 Promise,When Js,我一直在使用when.js来表示node.js中的承诺。我的函数如下所示: function my_func() { var d = when.defer(); // Async actions simulated with timeout setTimeout(function() { //... if(error) { return d.resolve(error); } d.r
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承诺做同样的事情?结构非常相似:
function my_func() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
if (error) {
reject('no');
}
resolve('yes')
}, 1000);
});
}
结构相当相似:
function my_func() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
if (error) {
reject('no');
}
resolve('yes')
}, 1000);
});
}
您的原始函数在
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);
});
}
这一点在中得到了很好的阐述。您的原始函数在
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);
});
}
这一点在本文中有相当充分的论述