如何修改以下代码?我想在从函数void func2(std::vector<std::vector<int>> &my2DArrayAsRef) {
int row = 2;
int column = 1;
int cellAtRow_Column = my2DArrayAsRef[row][column];
printf("value at [%d][%d] is %d (should be 7)\n", row, column, cellAtRow_Column);
}
int main(void)
{
std::vector<std::vector<int>> myArray2 = { {0,1,2},{3,4,5},{6,7,8} };
func2(myArray2);
return 0;
}
添加下一个代码之前加载完全两个脚本。有人可以给初学者一个暗示吗?我在评论后给出了我的建议//.
yourCodeToBeCalled
我借用的原始代码:link
答案 0 :(得分:2)
好的,我找到了逐个执行脚本的方法。由于加载脚本的顺序不正确,不再出现错误,例如:当下一个脚本使用jQuery命令时缺少jQuery框架。所以我决定使用 promises 情况下。
var loadJS = function(url) { /*url is URL of external file*/
return new Promise(function(resolve, reject) {
var scriptTag = document.createElement('script');
scriptTag.type = 'text/javascript';
scriptTag.setAttribute('nonce', '22os9h3sdfa');
scriptTag.onload = resolve;
scriptTag.onerror = reject;
scriptTag.src = url;
document.body.appendChild(scriptTag);
});
};
loadJS('js/jquery-3_1_1.min.js').then(() => { return loadJS('js/library.js'); }).then(() => {
var $ = jQuery.noConflict();//jQuery.noConflict();
});
现在'jquery-3_1_1.min.js'在'library.js'之后执行
问候!
答案 1 :(得分:1)
我不确定您为什么要将脚本元素添加到location
元素。
而不是
location.appendChild(scriptTag);
您可能想尝试
document.body.appendChild(scriptTag);
答案 2 :(得分:1)
假设我正确理解您的要求,loadJS
是一个函数,所以只需调用它两次,然后调用您的代码:
(function() {
var head = document.getElementsByTagName('head')
loadJS('somescript.js', function() { console.log('on load') }, head)
loadJS('somescript2.js', function() { console.log('on load2') }, head)
// This is your code to execute once the scripts have loaded.
console.log('Okay');
})();
此外,您还要从scriptTag.async = true;
中删除loadJS
行,以便强制它等到加载后继续执行。
编辑:根据您最近的更改,您可以省略中间参数(回调),不需要它。
编辑:鉴于您的最新更改,此代码应该有效:
(function() {
loadJS('somescript.js')
loadJS('somescript2.js')
// This is your code to execute once the scripts have loaded.
console.log('Okay');
})();
现在你在loadJS中有document.body.appendChild
,你不需要传递的元素。此外,您不需要使用回调,只需在2 loadJS
次调用后调用您的代码(假设您已删除了async
属性)。