2015-10-26 33 views
-1

我正在学习JavaScript承诺,我只是想知道下面的代码是否正确。基本上它非常简单。加载脚本文件。如果文件无法加载,则会出现错误。学习JavaScript承诺只需要一些方向

var promise = new Promise((resolve, reject) => { 

    var fh = document.createElement('script'); 
    fh.type = 'text/javascript'; 
    fh.async = true; 
    fh.src = 'script.js'; 

    /*Insert javascript at top of dom */ 
    fhs.parentNode.insertBefore(fh, fhs); 


    /*Success Response */ 
    fh.addEventListener('load', function (event) { 

    resolve('Loaded'); 

    }, false); 


    /*Error Response */ 
    fh.addEventListener("error", function (event) { 

    reject(Error('Error loading file')); 

    }, false); 
}); 
+0

我不知道DOM的事件监听器是如何工作的,但基本的前提看起来是正确的。但这个问题不适合于SO。请使用codereview.stackexchange.com。 – thefourtheye

+0

我会添加节点添加到DOM之前的事件监听器 - 可能不会有任何不同...也许 –

+0

我投票结束这个问题作为题外话,因为它属于codereview.stackexchange.com – thefourtheye

回答

0

您有一个错字。

fhs.parentNode.insertBefore(fh, fhs); 

fhs未定义。它应该从哪里来?控制台会为你抓到这个错误。相反,您可以将脚本元素附加到正文。

var promise = new Promise((resolve, reject) => { 

    var fh = document.createElement('script'); 
    fh.async = true; 
    fh.src = 'script.js'; 

    /*Insert javascript at bottom of dom */ 
    document.body.appendChild(fh); 

    /*Success Response */ 
    fh.addEventListener('load',() => resolve('Loaded')); 

    /*Error Response */ 
    fh.addEventListener("error",() => reject(Error('Error loading file'))); 

});