问题:能否将Promise值发送到next()
内部的函数而不是next()
内部的回调?
背景:以下标准Promise
模式可以正常工作。将 x等于1 发送到控制台。
function promisesPromises() {
return new Promise(function(resolve, reject) {
let x = 1;
if (x === 1) {
resolve('x equals 1');
} else {
reject('x does not equal 1');
}
});
}
promisesPromises()
.then(function(data) {
console.log(data);
});
但是,当我在.then()
内调用函数而不是回调函数时,会引发错误。
function promisesPromises() {
return new Promise(function(resolve, reject) {
let x = 1;
if (x === 1) {
resolve('x equals 1');
} else {
reject('x does not equal 1');
}
});
}
function linkOne(data) {
console.log(data);
}
promisesPromises()
.then(linkOne(data));
ReferenceError:数据未定义
我可以通过将函数放在回调函数中来克服这个问题,但这似乎很笨拙。
promisesPromises()
.then( function(data) {
linkOne(data);
});
是否存在另一种可以实现相同目标而不将函数放在回调内部的模式?
答案 0 :(得分:1)
then
接受一个函数,即您执行.then(linkOne(data));
并调用linkOne(data)
并传入由于未定义数据而引发错误的结果。
另一种方法是使用asnyc/await
:
const data = await promisesPromises();
linkOne(data);