我有两个函数可以解析一个promise,另一个第三个常量只是一个整数。在这里,我尝试document.querySelector('.a').addEventListener('click', handler);
function handler(e){
console.log(e.target); //either .b or img or p depending on where I click
}
以便返回已解决的承诺。
$('.a').on('click', '.b', function(){
//code
});
我的问题是,因为第3个常量只是一个整数而且不能解析一个promise,它是如何包含在结果中的。我得到的结果是Promise.all
。
答案 0 :(得分:2)
如果迭代对象中传递给Promise的任何项不是Promise的实例,它将被忽略并使用then
方法传递给Promise.resolve
结果。简洁,它将自动解决。
如果iterable包含非promise值,它们将被忽略,但是 仍然计入返回的promise数组值(如果是promise 完成):
答案 1 :(得分:0)
在Promose.all(...)中,如果iterables是非承诺值,那么结果将是
这3个例子将清楚说明
// resolved by default
let a = 100;
let b = 200;
Promise.all([a,b]).then(function(){
console.log("Promised Resolved");
});
从结果推断 - 已解决
// Resolved here
Promise.all([a,b, Promise.resolve("R-Text")]).then(function{
console.log("R-Test Promise Resolved...");
}).catch(function(text){
console.log("R-Test Promise Rejected...", text);
});
并从结果推断 - 拒绝
// Rejected here
Promise.all([a,b, Promise.resolve("R-Text"), Promise.reject("Rejected")]).then(function{
console.log("R-Test Promise Resolved...");
}).catch(function(text){
console.log("R-Test Promise Rejected...", text);
});