
什么是回调函数,它与常规函数有何不同?
与回调相比,promise 如何提高代码可读性并管理异步操作?
promise 的主要状态是什么,它们如何在这些状态之间转换?
如何使用 promise 处理错误,这与使用回调的错误处理相比如何?
promise.all 和 promise.race 有什么区别,什么时候会使用它们?
async/await 语法如何简化 promises 的使用,以及使用 wait 的规则是什么?
promise 相对于回调的好处
回调地狱的例子:
fetchdata(function(response1) {
fetchmoredata(response1, function(response2) {
fetchevenmoredata(response2, function(response3) {
console.log(response3);
});
});
});
fetchdata() .then(response1 => fetchmoredata(response1)) .then(response2 => fetchevenmoredata(response2)) .then(response3 => console.log(response3)) .catch(error => console.error(error));
使用回调处理错误:
function fetchdata(callback) {
settimeout(() => {
if (/* error condition */) {
callback(new error('an error occurred'), null);
} else {
callback(null, 'data');
}
}, 1000);
}
fetchdata((error, data) => {
if (error) {
console.error(error);
} else {
console.log(data);
}
});
function fetchdata() {
return new promise((resolve, reject) => {
settimeout(() => {
if (/* error condition */) {
reject(new error('an error occurred'));
} else {
resolve('data');
}
}, 1000);
});
}
fetchdata()
.then(data => console.log(data))
.catch(error => console.error(error));
例子:
const promise1 = promise.resolve(3);
const promise2 = 42;
const promise3 = new promise((resolve, reject) => {
settimeout(resolve, 100, 'foo');
});
promise.all([promise1, promise2, promise3]).then(values => {
console.log(values); // [3, 42, "foo"]
});
例子:
const promise1 = new promise((resolve, reject) => {
settimeout(resolve, 500, 'one');
});
const promise2 = new promise((resolve, reject) => {
settimeout(resolve, 100, 'two');
});
promise.race([promise1, promise2]).then(value => {
console.log(value); // "two"
});
例子:
async function fetchData() {
return 'data';
}
async function processData() {
try {
const data = await fetchData();
console.log(data);
} catch (error) {
console.error(error);
}
}
processData();
以上就是JS:承诺还是回调?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号