在 RequireJS 中调用对象函数
Call object function in RequireJS
我使用 RequireJS 加载一些脚本。
现在我想创建一些自己的方法,这些方法也需要加载的脚本。我已经尝试了很多,但我总是得到 Uncaught (in promise) ReferenceError: hd is not defined
。两个脚本都加载到我的 index.html.
从 main.js
调用方法 'connect'
hd.connect.call(token);
套接字-workers.js
...
require.config({
shim: {
'socket.io': {
exports: 'io'
},
'socket.io-stream': {
exports: 'ss'
}
},
paths: {
'socket.io': WEBSOCKET_PROXY_HOST + '/socket.io/socket.io',
'socket.io-stream': WEBSOCKET_PROXY_HOST + '/socket.io-stream/socket.io-stream'
},
waitSeconds: 1
});
requirejs([
'socket.io', 'socket.io-stream'
], function(io, ss) {
// Setup Methods & Events
const hd = {
connect : function(token) {
// Connect to Socket, Proxy Server & authenticate
socket = io(WEBSOCKET_PROXY_HOST, {
auth: {
token: token
}
}).on('connect', function(data) {
socketConnected = true;
isStreaming = false;
console.log('connected to socket');
if (activeRecording) {
//#startRecording();
}
});
...
我终于找到了解决这个问题的方法。我已经添加
window.hd = hd;
在函数中使方法可用。
现在我可以调用每个方法,例如hd.connect(), hd.disconnect()
RequireJS可以这样使用,但是还有一个更合适的方法——定义一个模块,然后在定义另一个模块时require它:
套接字-workers.js:
require.config({
shim: {
'socket.io': {
exports: 'io'
},
'socket.io-stream': {
exports: 'ss'
}
},
paths: {
'socket.io': WEBSOCKET_PROXY_HOST + '/socket.io/socket.io',
'socket.io-stream': WEBSOCKET_PROXY_HOST + '/socket.io-stream/socket.io-stream'
},
waitSeconds: 1
});
define('hd', [
'socket.io', 'socket.io-stream'
], function(io, ss) {
// Setup Methods & Events
const hd = {
connect : function(token) {
// Connect to Socket, Proxy Server & authenticate
socket = io(WEBSOCKET_PROXY_HOST, {
auth: {
token: token
}
}).on('connect', function(data) {
socketConnected = true;
isStreaming = false;
console.log('connected to socket');
if (activeRecording) {
//#startRecording();
}
});
);
return hd;
main.js:
define(['hd'], function (hd) {
hd.connect.call(token);
});
我使用 RequireJS 加载一些脚本。
现在我想创建一些自己的方法,这些方法也需要加载的脚本。我已经尝试了很多,但我总是得到 Uncaught (in promise) ReferenceError: hd is not defined
。两个脚本都加载到我的 index.html.
从 main.js
调用方法 'connect'hd.connect.call(token);
套接字-workers.js
...
require.config({
shim: {
'socket.io': {
exports: 'io'
},
'socket.io-stream': {
exports: 'ss'
}
},
paths: {
'socket.io': WEBSOCKET_PROXY_HOST + '/socket.io/socket.io',
'socket.io-stream': WEBSOCKET_PROXY_HOST + '/socket.io-stream/socket.io-stream'
},
waitSeconds: 1
});
requirejs([
'socket.io', 'socket.io-stream'
], function(io, ss) {
// Setup Methods & Events
const hd = {
connect : function(token) {
// Connect to Socket, Proxy Server & authenticate
socket = io(WEBSOCKET_PROXY_HOST, {
auth: {
token: token
}
}).on('connect', function(data) {
socketConnected = true;
isStreaming = false;
console.log('connected to socket');
if (activeRecording) {
//#startRecording();
}
});
...
我终于找到了解决这个问题的方法。我已经添加
window.hd = hd;
在函数中使方法可用。
现在我可以调用每个方法,例如hd.connect(), hd.disconnect()
RequireJS可以这样使用,但是还有一个更合适的方法——定义一个模块,然后在定义另一个模块时require它:
套接字-workers.js:
require.config({
shim: {
'socket.io': {
exports: 'io'
},
'socket.io-stream': {
exports: 'ss'
}
},
paths: {
'socket.io': WEBSOCKET_PROXY_HOST + '/socket.io/socket.io',
'socket.io-stream': WEBSOCKET_PROXY_HOST + '/socket.io-stream/socket.io-stream'
},
waitSeconds: 1
});
define('hd', [
'socket.io', 'socket.io-stream'
], function(io, ss) {
// Setup Methods & Events
const hd = {
connect : function(token) {
// Connect to Socket, Proxy Server & authenticate
socket = io(WEBSOCKET_PROXY_HOST, {
auth: {
token: token
}
}).on('connect', function(data) {
socketConnected = true;
isStreaming = false;
console.log('connected to socket');
if (activeRecording) {
//#startRecording();
}
});
);
return hd;
main.js:
define(['hd'], function (hd) {
hd.connect.call(token);
});