javascript - 等待 getScript 而不链接回调
问题描述
我有一个设置功能,我想像这样使用:
async function setup()
{
// Load the TF libs, then on complete - create the model.
await loadTensorFlowLibraries();
await createModel();
await load();
await train();
}
我的第一个函数导入一些外部脚本,如下所示:
function loadTensorFlowLibraries() {
$.when(
$.getScript( "https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js" ),
$.getScript( "https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-vis@1.0.2/dist/tfjs-vis.umd.min.js" ),
$.Deferred(function( deferred ){
$( deferred.resolve );
})
).done(function(){
console.log("Scripts loaded");
});
}
由于此函数异步运行,createModel()
因此在完成之前执行loadTensorFlowLibraries()
并且脚本失败。
为了解决这个问题,我可以loadTensorFlowLibraries
像这样传递一个回调函数:
function loadTensorFlowLibraries(onComplete) {
$.when(
$.getScript( "https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js" ),
$.getScript( "https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-vis@1.0.2/dist/tfjs-vis.umd.min.js" ),
$.getScript( "uploads/michaelryan/data.js"),
$.Deferred(function( deferred ){
$( deferred.resolve );
})
).done(function(){
console.log("Scripts loaded");
onComplete();
});
}
这里的问题是我必须像这样将所有功能链接在一起,例如
function setup()
{
// Load the TF libs, then on complete - create the model.
loadTensorFlowLibraries(createModel(load(train)));
}
谁能指出我如何像我的第一个示例那样设计脚本?
解决方案
$.when
返回一个类似 Promise 的对象,因此您可以return
从每个子函数中获取它:
function loadTensorFlowLibraries() {
return $.when(
$.getScript( "https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.0.0/dist/tf.min.js" ),
$.getScript( "https://cdn.jsdelivr.net/npm/@tensorflow/tfjs-vis@1.0.2/dist/tfjs-vis.umd.min.js" )
);
}
然后你可以await
在你的setup
函数中使用它,就像你在初始代码块中所做的那样。
推荐阅读
- reactjs - 如何将列表项从 api 推送到 redux 中的初始默认状态?
- spring - spring rest 响应在响应中添加 $type 属性
- numpy - 仅在加载保存的模型时无法将 NumPy 数组转换为张量(不支持的对象类型浮点数)
- arrays - 登录验证后,我无法将嵌套数组数据从 Mongodb 提取到渲染页面。但可以检索其他数据
- python - 如何在不循环 login() 的情况下输入 main()
- if-statement - OCaml 此变体表达式应具有单位类型
- laravel - 如何在 Ccontroller 中运行 Artisan 命令
- java - 更快的加载 web 视图?
- typescript - 有一个无类型库的 Typescript 声明文件,同时还定义了由同一个无类型库添加到 Vue 的自定义属性
- python - 我的数据没有显示在 SQLite 的 DB Browser 上