System.import 承诺链
System.import promise chaining
我偶然发现了一些片段 similar to this one:
System.import('core-js').then( function() {
System.import('polymer/mutationobservers').then( function() {
System.import('aurelia-bootstrapper');
})
});
它是回调地狱的替代品 - 承诺地狱吗?顺序 System.import
是否可以展平以利用承诺链,或者可能存在问题?
我建议改为链接,例如
System.import('core-js')
.then(function(){
return System.import('polymer/mutationobservers');
})
.then(function(){
return System.import('aurelia-bootstrapper');
});
当您 return
来自 then
的承诺时,它会在执行下一个 then
之前等待它解决,因此在这种情况下 mutationobservers
必须加载在 aurelia-bootstrapper
.
之前
由于 System.import returns 一个承诺,使用一组承诺。我发现它比链接更直接。
Promise.all([
System.import('core-js'),
System.import('polymer/mutationobservers'),
System.import('aurelia-bootstrapper')
]).then(function(modules) {
var corejs = modules.shift(),
mutationobservers = modules.shift(),
aureliaBootstrapper = modules.shift()
;
// You code goes here.
});
在这种情况下我更喜欢 async/await 但是你需要在一个异步函数中,它可能并不总是适用于 import 语句
function async doStuff () {
await System.import('core-js');
await System.import('polymer/mutationobservers');
await System.import('aurelia-bootstrapper');
console.log('everything done!!!');
}
我偶然发现了一些片段 similar to this one:
System.import('core-js').then( function() {
System.import('polymer/mutationobservers').then( function() {
System.import('aurelia-bootstrapper');
})
});
它是回调地狱的替代品 - 承诺地狱吗?顺序 System.import
是否可以展平以利用承诺链,或者可能存在问题?
我建议改为链接,例如
System.import('core-js')
.then(function(){
return System.import('polymer/mutationobservers');
})
.then(function(){
return System.import('aurelia-bootstrapper');
});
当您 return
来自 then
的承诺时,它会在执行下一个 then
之前等待它解决,因此在这种情况下 mutationobservers
必须加载在 aurelia-bootstrapper
.
由于 System.import returns 一个承诺,使用一组承诺。我发现它比链接更直接。
Promise.all([
System.import('core-js'),
System.import('polymer/mutationobservers'),
System.import('aurelia-bootstrapper')
]).then(function(modules) {
var corejs = modules.shift(),
mutationobservers = modules.shift(),
aureliaBootstrapper = modules.shift()
;
// You code goes here.
});
在这种情况下我更喜欢 async/await 但是你需要在一个异步函数中,它可能并不总是适用于 import 语句
function async doStuff () {
await System.import('core-js');
await System.import('polymer/mutationobservers');
await System.import('aurelia-bootstrapper');
console.log('everything done!!!');
}