ES6 为什么要 return 一个承诺?
ES6 why does one have to return a promise?
两者有什么区别(没有return)
function doAsyncTask() {
var promise = new Promise((resolve, reject) => {
setTimeout(() => {
console.log("Async Work Complete");
if (error) {
reject();
} else {
resolve();
}
}, 1000);
});
return promise;
}
以下没有"Return Promise"
function doAsyncTask() {
var promise = new Promise((resolve, reject) => {
setTimeout(() => {
console.log("Async Work Complete");
if (error) {
reject();
} else {
resolve();
}
}, 1000);
});
}
ES6 why does one have to return a promise?
你不知道。
What's the difference between the two (without a return)
不同的是,一个什么都不return。
(因此您不能调用 doAsyncTask
并使用 return 值)。
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
作为 Quentin's 的扩展,您应该 return 始终承诺。
想法是,如果一个函数是异步函数,它应该提供一种监听变化的方法。由来电者决定他们是否需要对更改做出反应。
所以你可以这样调用你的函数:
doAsyncTask().then(...);
或
doAsyncTask();
但如果我们不return承诺,调用者将永远无法选择监听。
两者有什么区别(没有return)
function doAsyncTask() {
var promise = new Promise((resolve, reject) => {
setTimeout(() => {
console.log("Async Work Complete");
if (error) {
reject();
} else {
resolve();
}
}, 1000);
});
return promise;
}
以下没有"Return Promise"
function doAsyncTask() {
var promise = new Promise((resolve, reject) => {
setTimeout(() => {
console.log("Async Work Complete");
if (error) {
reject();
} else {
resolve();
}
}, 1000);
});
}
ES6 why does one have to return a promise?
你不知道。
What's the difference between the two (without a return)
不同的是,一个什么都不return。
(因此您不能调用 doAsyncTask
并使用 return 值)。
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
作为 Quentin's
想法是,如果一个函数是异步函数,它应该提供一种监听变化的方法。由来电者决定他们是否需要对更改做出反应。
所以你可以这样调用你的函数:
doAsyncTask().then(...);
或
doAsyncTask();
但如果我们不return承诺,调用者将永远无法选择监听。