0
是否可以在define塊中使用require?在RequireJS中使用require定義
我想加載Facebook的JS API,但需要將其包裝在一個不同的上下文需求,因爲我不希望整個應用程序停止加載,如果Facebook被防火牆阻止。
我遇到的問題是如何從嵌套的require()調用中返回模塊。
我的代碼看起來是這樣的:
define([ 'require' ],
function(require)
{
var fbRequire = require(
{
context: 'fb',
waitSeconds: 3
});
fbRequire.onError = function()
{
console.warn('fbRequire.onError', arguments);
};
fbRequire([ 'https://connect.facebook.net/en_US/all/debug.js' ],
function()
{
console.log('facebook file now loaded');
// init the Facebook JS SDK
var facebookSettings = {
channelUrl: '//' + window.location.hostname + '/facebook-channel.html', // Channel File for x-domain communication
status: true,
cookie: true,
xfbml: true,
appId: '1234567890'
};
FB.init(facebookSettings);
// this is the bit I'm confused about
// how do I...
return FB;
// ...because it's asynchronous and needs to be returned from the define() call?
});
});
這是一個道場項目,如果這能幫助(我需要使用Dojo /遞延?)。
是否使它成爲依賴不起作用? – Bergi
這就是我最初編寫它的方式,但如果Facebook被阻止,整個應用程序就會崩潰,因爲require會拋出錯誤,然後不會加載任何其他內容。如果Facebook沒有被封鎖,那麼它就可以正常工作。在不同的上下文中使用require()顯然是答案。請參閱:https://groups.google.com/forum/?fromgroups=#!topic/requirejs/go-RbejZ7Zg – voidstate
嘗試[catch the error](http://requirejs.org/docs/api.html#errbacks )並重新定義Facebook到本地 – Bergi