Javascript 无法使用Kriskowal的q(q.defer.resolve)读取未定义的属性“then”

Javascript 无法使用Kriskowal的q(q.defer.resolve)读取未定义的属性“then”,javascript,q,Javascript,Q,我正在尝试Kriskowal的promise library q。为什么我会犯这个错误,我做错了什么 var d = Q.defer(); d.promise.then(function(){console.log("finished")}); d.resolve(true); // "finished"; Uncaught TypeError: Cannot read property 'then' of undefined 此外,我想知道为什么我必须用true来解析延迟对象才能解析它。我已

我正在尝试Kriskowal的promise library q。为什么我会犯这个错误,我做错了什么

var d = Q.defer();
d.promise.then(function(){console.log("finished")});
d.resolve(true); // "finished"; Uncaught TypeError: Cannot read property 'then' of undefined

此外,我想知道为什么我必须用true来解析延迟对象才能解析它。我已经习惯了angular的$q实现,在这里您可以不用任何参数就解决问题。

看起来它实际上是可行的,也许导入有问题?谢谢您的回复。我使用了官方github存储库中的q.js。通过使用cdnjs的0.9.6版,就像在JSFIDLE中一样,我得到了另一个错误。我只包括带有的文件未捕获类型错误:无法读取未定义isPromise@q.js:839的属性“promiseDispatch”我是否遗漏了什么?嗯,这很奇怪。您是否使用了与给定代码完全相同的代码?您在最新版本中是否遇到相同的错误?一个选项是检查您是否没有重写像window.theNativeFunction=function{}这样的本机javascript函数;哎呀!我重写了对象类!非常感谢你的帮助!