两者之间有什么区别(无回报)
function doAsyncTask() {
var promise = new Promise((resolve, reject) => {
setTimeout(() => {
console.log("Async Work Complete");
if (error) {
reject();
} else {
resolve();
}
}, 1000);
});
return promise;
}
以下没有“退货承诺”
function doAsyncTask() {
var promise = new Promise((resolve, reject) => {
setTimeout(() => {
console.log("Async Work Complete");
if (error) {
reject();
} else {
resolve();
}
}, 1000);
});
}
答案 0 :(得分:3)
ES6为什么必须要兑现承诺?
你没有。
两者之间有什么区别(无回报)
区别在于一个人什么都不返回。
(因此,您无法调用doAsyncTask
并利用返回值)。
答案 1 :(得分:3)
作为Quentin的answer的扩展,您应该始终返回承诺。
想法是,如果一个函数是一个异步函数,它应该提供一种监听更改的方法。呼叫者可以决定是否需要对更改做出反应。
因此您可以将函数调用为:
doAsyncTask().then(...);
或者只是
doAsyncTask();
但是,如果我们不返回承诺,则呼叫者将永远不会选择听。
答案 2 :(得分:-3)
var doAsyncTask1 = function() {
var promise = new Promise(resolve => {
/// task that takes 5 seconds
setTimeout(resolve, 5000);
});
return promise;
}
var doAsyncTask2 = function() {
var promise = new Promise(resolve => {
/// task that takes 5 seconds
setTimeout(resolve, 5000);
});
// no return
}
await doAsyncTask1();
console.log('task complete'); // this line of code runs 5 seconds after the previous one
await doAsyncTask2(); // because you have returned nothing, 'await' does nothing
console.log('task2 not complete yet'); // this line of code runs immediately after the previous one, before the 5-second task is complete