【发布时间】:2018-01-03 11:40:41
【问题描述】:
我有异步功能,我希望它执行到某个点,暂停执行,并在用户进行某些操作(例如单击按钮)时恢复执行其余功能。我试过这个:
let changed = false;
let promise = new Promise(function(resolve, reject){
if(changed){
resolve('success');
}else{
reject('failure');
}
});
async function test(){
console.log('function started');
console.log('before await');
try{
const fulfilledValue = await promise;
console.log(fulfilledValue);
}catch(failure){
console.log(failure);
}
console.log('after await');
};
document.getElementById('change').addEventListener('click', function(){
if(!changed){
console.log('changed = true');
changed = true;
}else{
changed = false;
}
});
test();
但是它并没有像我想的那样工作。异步功能不会等到用户操作。据我了解,这是因为承诺立即被拒绝,因为“已更改”标志最初设置为 false。如何修复此代码以按预期工作?有可能吗?
【问题讨论】:
-
你不能只完成异步操作,将结果保存在某处,然后仅在单击按钮后显示它吗?这会达到您的预期结果吗?
标签: javascript ecmascript-6 async-await es6-promise