return 围绕承诺的承诺
return a promise around anound promise
给定一些承诺(参数
我想创建另一个 promise,它将进行一些处理,然后 resolve/reject 基于 somePromise 的结果:
function wrapPromise() {
return new Promise(function(resolve, reject) {
// some processing
somePromise(someParam).then(function() { resolve(); }, function(err) { reject(err); });
});
}
这是正确的方法还是有更短的语法?
不需要额外的承诺。只需进行处理,然后 return 承诺。
function wrapPromise() {
// some processing
return somePromise(someParam);
}
我可能会做相反的事情。首先获取值,然后进行处理和 return Promise(假设它是异步的)。
var myPromise = somePromise(someParm)
.then(function (retVal) {
return Promise(function (resolve, reject) {
// Some processing with retVal e.g.
if (retVal > 5) {
resolve(retVal);
} else {
reject('value less than 5');
}
})
})
// Then you can do other stuff
.then(function (val) {
console.log('this value is greater than 5', val);
})
.catch(function (reason) {
console.log(reason); // 'value is less than 5'
});
你的要求听起来像 I will make a promise to make a promise. And, therefore, the first promise should fail if the second fails.
暂时忘掉编程:如果你说,这只会让事情变得复杂,我会承诺我不会吃冰淇淋。不,你就答应你不吃冰淇淋吧
考虑 re-designing 你的代码,这样你可以让它更简单,说,我会做出一个可以解决或拒绝的承诺 (A)。我将做出另一个单独的承诺 (B),它可以独立于 A 解决或拒绝。
或者只使用一个 promise 但将代码分成单独的 'then' 链,例如
promise.then(function(result) { // First 'then'
console.log(result); // Resolve case
}, function(err) {
console.log(err); // Reject case
}).then(function(val) { // Second 'then'
console.log(val); // Resolve case
});
为了更好地理解我强烈推荐阅读:http://www.html5rocks.com/en/tutorials/es6/promises/
给定一些承诺(参数
我想创建另一个 promise,它将进行一些处理,然后 resolve/reject 基于 somePromise 的结果:
function wrapPromise() {
return new Promise(function(resolve, reject) {
// some processing
somePromise(someParam).then(function() { resolve(); }, function(err) { reject(err); });
});
}
这是正确的方法还是有更短的语法?
不需要额外的承诺。只需进行处理,然后 return 承诺。
function wrapPromise() {
// some processing
return somePromise(someParam);
}
我可能会做相反的事情。首先获取值,然后进行处理和 return Promise(假设它是异步的)。
var myPromise = somePromise(someParm)
.then(function (retVal) {
return Promise(function (resolve, reject) {
// Some processing with retVal e.g.
if (retVal > 5) {
resolve(retVal);
} else {
reject('value less than 5');
}
})
})
// Then you can do other stuff
.then(function (val) {
console.log('this value is greater than 5', val);
})
.catch(function (reason) {
console.log(reason); // 'value is less than 5'
});
你的要求听起来像 I will make a promise to make a promise. And, therefore, the first promise should fail if the second fails.
暂时忘掉编程:如果你说,这只会让事情变得复杂,我会承诺我不会吃冰淇淋。不,你就答应你不吃冰淇淋吧
考虑 re-designing 你的代码,这样你可以让它更简单,说,我会做出一个可以解决或拒绝的承诺 (A)。我将做出另一个单独的承诺 (B),它可以独立于 A 解决或拒绝。
或者只使用一个 promise 但将代码分成单独的 'then' 链,例如
promise.then(function(result) { // First 'then'
console.log(result); // Resolve case
}, function(err) {
console.log(err); // Reject case
}).then(function(val) { // Second 'then'
console.log(val); // Resolve case
});
为了更好地理解我强烈推荐阅读:http://www.html5rocks.com/en/tutorials/es6/promises/