我有一个函数接受thenable(具有then()方法的对象;参见MDNJavaScriptdocs:Promise.resolve()的顶部)或其他:functionresolve(value:{then:()=>T}|T){if(value&&value.then){console.log('thenable',value.then);}else{console.log('notthenable');}}TryFlowdemo当我在此if语句中访问value.then时,Flow会报错。我可以用(value:any).then修复它,但这看起来很老套。谁能推荐一种类型检查的好方法?
我试图理解resolve(thenable)和resolve('non-thenable-object')之间的区别。在下面的示例中,使用promise而不是thenable,因为promise也是thenable并且可能更容易理解。Demo1:resolve(promise)letresolvePromise=newPromise(resolve=>{letresolvedPromise=Promise.resolve()resolve(resolvedPromise)})resolvePromise.then(()=>{console.log('resolvePromisereso
返回promise的函数叫什么?这不是玩笑的开始 最佳答案 在javascript社区中,我看到一个函数返回一个名为“thenable”的promise,我在编码时认为“thenable”的次数足够多。这是一个thenable函数。我喜欢这个名字有很多原因:1)Thenable描述了功能行为。如果它返回一个promise,你可以在上面调用“then”。2)它是唯一的。Promise不完全是单子(monad)的,所以单子(monad)是不合适的。“Async”更像是一个父类(superclass)函数,无助于描述Promise的性质。