当我运行此代码时,这是 Chrome 调试工具中的结果:
Init 完成后需要加载元数据 z
我期待“after init”仅在“finished z”代码触发后出现,但它似乎之前返回。为什么是这样?(我对 JS 中的 Promise 和异步编程不熟悉)
Class1.js:
function activate()
{
dataServiceHelper.initBreezeMetaData().then(console.log('after Init'));
}
dataServiceHelper.js:
function initBreezeMetaData()
{
if (manager.metadataStore.isEmpty())
{
console.log('need to load metadata');
return manager.fetchMetadata().then(function ()
{
console.log('loaded metadata for ' + config.serviceUrl);
}).fin(function ()
{
console.log('finished z');
});
} else
{
return true;
}
}