<script type="text/javascript">
// 模拟一个异步函数,返回一个 Promise,最终解析出某个值,比如用户ID
function fetchData() {
return new Promise((resolve, reject) => {
//发动网络请求
//成功回调 resolve(userId);
//失败回调 reject(res);
// 模拟异步操作,比如网络请求
setTimeout(() => {
const userId = 12345; // 假设我们从某处获取到了用户ID
console.log('fetchData 执行完成,得到 userId:', userId);
resolve(userId); // 返回的值可以被下一个 .then() 接收
}, 1000); // 模拟1秒延迟
//请求出错
//reject(res);
});
}
// 模拟另一个异步函数,需要使用上一个函数的结果
function processData(userId) {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log('processData 执行,处理的 userId 是:', userId);
const result = `用户 ${userId} 的数据处理完成`;
resolve(result); // 最终结果
}, 1000);
//请求出错
//reject(res);
});
}
// 使用 Promise 链式调用
//fetchData().then((userId) => {return processData(userId);}).then((finalResult) => { console.log('最终结果:', finalResult);}).catch((error) => { console.error('出错了:', error);});
//语法糖形式
async function main() {
try {
const userId = await fetchData();
const finalResult = await processData(userId);
console.log('最终结果:', finalResult);
} catch (error) {
console.error('出错了:', error);
}
}
// 调用主函数
main();
</script>