我传递了一个fn
作为参数,以应用于我的树遍历函数中的每个节点。我试图通过使用fn
来检查typeof fn.then === 'function'
是否是一个承诺(如果是,我将需要使用here所示的“有希望的”遍历版本)。作为fn
的定义,如果我将一个新的Prom包装到接受node
参数的函数中,则上述检查将返回undefined
而不是function
。
<script>
let promise1 = new Promise((resolve, reject) => {
let y = 2;
resolve(y);
});
let promise2 = function(y){
return new Promise((resolve, reject) => {
resolve(y);
});
};
alert ('typeof promise1.then: ' + typeof promise1.then + '\ntypeof promise2.then: ' + typeof promise2.then);
</script>
答案 0 :(得分:2)
我正在尝试检查某物是否是应许;如果是这样,我将需要使用“有希望的”遍历版本
不要那样做。从同一个函数返回不同的类型(结果与有保证的结果)非常令人困惑,并且在函数内部的“正常”版本和“有希望的”版本之间动态切换不会使您的代码更易于维护。>
只需提供两个不同的函数,一个同步函数期望从其回调中获取纯值,而异步函数则期望其回调返回promise。在这里,您只需使用Promise.resolve(…)
将任何返回值转换为一个Promise,而不是测试它是否是一个Promise(或类似的东西)。