最近我听到'承诺',并试图了解它的工作原理并说...... 它运作不佳。
function example(){
return new Promise(function(){
var i=0;
while(i<5000){console.log(i);i++;}
})
}
example()
.then(
function(){
console.log('done')
},
function(){
console.log('error')
});
它写了1-4999但从不写'完成'或'错误'..我怎么能写'then'子句呢?
您的回复将不胜感激。
答案 0 :(得分:1)
Promises有两个论点: resolve&amp;拒绝 ,这将是 .then()&amp;中定义的要执行的功能。 .catch() 即可。因此,为了能够打印完成&#39;或者&#39;错误&#39;你应该这样做:
function example(condition){
return new Promise(function(resolve, reject){
var i=0;
while(i<5000){console.log(i);i++;}
if(condition){
resolve();
} else {
reject();
}
})
}
example(true).then(function(){console.log('done')},function(){console.log('error')});//Prints 'done'
example(false).then(function(){console.log('done')},function(){console.log('error')});//Prints 'error'
答案 1 :(得分:0)
function example() {
return new Promise(function(resolve,reject) {
var i = 0;
while (i < 5000) {
console.log(i);
i++;
}
resolve(i);
})
}
example()
.then(
function() {
console.log('done')
},
function() {
console.log('error')
});
你需要解决,拒绝回调。在您的代码中,您的Promise始终处于待定状态。
答案 2 :(得分:0)
类似...... https://www.promisejs.org/patterns/
例:
function example() {
return new Promise(function(resolve, reject){
try{
var i = 0;
while(i < 5000){
console.log('proccess',i);
i++;
}
resolve(i);// an if, to resolve or reject...
} catch(error) {
reject(error);
}
});
}
console.log('will call the promise');
example().then(function(success){
console.log('caller promise result', success);
}).catch(function(error){
console.log('if some problem, catch',error.toString());
});
console.log('Here, will be before or after the promise resolves');