考虑下面的代码段
function one(){
var prm = new Promise(function(resolve,reject){
});
prm.customKey = function(){
}
return prm;
}
function two(){
return one().then(function(){
//something
});
}
现在调用函数2,返回一个缺少'customKey'的诺言
function three(){
return one();
}
但是在函数三中做同样的事情(没有使用'then'处理成功), 返回其中包含“ customKey”的promise。
有人可以澄清我的真实情况和原因吗?
答案 0 :(得分:3)
从“ Mozilla Docs”中可以看到,then
方法返回新的Promise
(例如:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/then)。
如果您想分配一个函数来检索/在resolve函数中执行某些操作,请按以下步骤操作:
var prm = new Promise((resolve, reject) => {
let customKeyFunction = () => {
console.log("I'm custom key function.");
};
resolve(customKeyFunction);
})
从现在开始,您可以像这样调用此函数:
function two() {
return one().then(customKey => {
customKey();
})
}