2016-11-17 25 views
-3

私は以前にそれらを使用したことがないので、私はjavascriptの約束の周りに私の頭を得ようとしています。 今、私はいくつかのチュートリアルを見てきた、とthis oneに、私は、コードを試すことにしましたが、私はこれを実行する場合:コマンドnode promise.jsとWindowsコンソールでウィンドウが定義されていません:約束事のエラー

if (window.Promise) { // Check if the browser supports Promises 
    var promise = new Promise(function(resolve, reject) { 
    //asynchronous code goes here 
    }); 
} 

を、私はこのエラーを見ることができます:

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> 

私は何か間違っているのですか? ありがとう

+4

、まだあなたがこれを実行していませんスクリプトはブラウザで開き、 'window'が定義されます。 – Gavin

+0

コマンドラインにウィンドウがありません... – baao

+0

doh!もちろん!大失敗のために申し訳ありません... – antobbo

答えて

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 
} 
あなたはブラウザがPromises`をサポートしているかどうかをチェックし、 `コメントしている
関連する問題