我试图了解javascript承诺,因为我之前从未使用过它们。 现在,我已经查看了几个教程,在this one中我决定尝试代码,但是当我运行它时:
if (window.Promise) { // Check if the browser supports Promises
var promise = new Promise(function(resolve, reject) {
//asynchronous code goes here
});
}
使用命令node promise.js
在Windows控制台中我可以看到此错误:
C:\Users\antobbo\Desktop\pdfSearch\promise.js:1
(function (exports, require, module, __filename, __dirname) { if (window.Promise) { // Check if the browser supports Promises
^
ReferenceError: window is not defined
at Object.<anonymous> (C:\Users\antobbo\Desktop\pdfSearch\promise.js:1:67)
at Module._compile (module.js:570:32)
at Object.Module._extensions..js (module.js:579:10)
at Module.load (module.js:487:32)
at tryModuleLoad (module.js:446:12)
at Function.Module._load (module.js:438:3)
at Module.runMain (module.js:604:10)
at run (bootstrap_node.js:394:7)
at startup (bootstrap_node.js:149:9)
at bootstrap_node.js:509:3
C:\Users\antobbo\Desktop\pdfSearch>
这是否意味着我做错了什么? 感谢
答案 0 :(得分:0)
您正在使用期望在浏览器中的代码,因为那里将定义window
。
如果这是node.js,那么您可能已经知道您正在运行的node.js版本,因为您控制了自己的环境,因此您可以提前知道您的节点版本是否已构建 - 在承诺与否。
如果您正在为其他人编写代码并且您可能不知道它运行的node.js的版本,那么您可能只需要Promise polyfill来处理您的检查。在NPM上有几个,或者你可以使用更全功能的库,如Bluebird(这是我使用的,甚至比本机承诺更先进)。
如果你真的想测试node.js中是否存在Promise
,那么你可以这样做:
// Check if the node.js Promises
if (typeof Promise === "function") {
// yes native promises are supported
}