[英]promise async await without .then callback
我试图学习并更好地理解async
如何与新的async
/ await
关键字一起工作,但是有些事情令人困惑。
在本文中: https : //davidwalsh.name/async-await
它说使用async
和await
不需要使用回调,例如:
async function parallel(callback) {
const wait1 = wait(500);
const wait2 = wait(500);
await wait1;
await wait2;
callback( [wait1, wait2] );
}
如果要测试它,我们需要先定义一个超时功能,用作wait
:
var wait = function(time) {
return new Promise( function(resolve, reject) {
setTimeout(function() {
resolve( Math.random() * time );
}, time);
});
};
最后,我们需要一些东西来调用parallel
函数并读取值:
parallel(function(data) {
console.log('data', data);
});
问题是,如果您读取值-它们是一个Promise对象而不是实际值,则可以解决此问题:
async function parallel(callback) {
var wait1 = wait(500).then(function(data) {
wait1 = data;
});
var wait2 = wait(500).then(function(data) {
wait2 = data;
});
await wait1;
await wait2;
callback( [wait1, wait2] );
}
现在它将可以正常工作,在此处进行演示: https : //jsfiddle.net/jp3g2q5k/
但是您能帮我理解为什么我必须使用.then
回调吗? 它应该是没有回调的情况。 也许有人知道如何更改此代码以使其不使用回调。
您正在使用'await'关键字解决承诺。 在您的示例中将是:
const result1 = await wait1;
const result2 = await wait2;
callback( [result1 , result2 ] );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.