私は約束を私の$each
ループに付けるのに問題があります。 getTemplate
は非同期関数です。私はそれぞれの中のすべてのテンプレートをフィードし、それらをgetAppsTmp
変数に集めて下に挿入したいと思います。現時点では、その後の変数は空です。私のお金に約束をつける方法
var getAppsTmp
var promise = $.each(addons, function (i, addon) {
if (addon.isApp === true && addon.appLaunchUrl) {
console.log(addon)
var bestIcon = addon.icons.length - 1
getTemplate('app-link', function (tmp) {
getAppsTmp += tmp({
appId: addon.id,
appLaunch: addon.launchType,
appName: addon.shortName,
appUrl: addon.appLaunchUrl,
appIcon: addon.icons[bestIcon].url
})
})
}
})
$.when(promise).then(function() {
$(modalId + ' .content').html(getAppsTmp)
})
私はこの方法を行う場合はすべての作品が、私は一度にそれらすべてを追加する必要があります。
getTemplate('app-link', function (tmp) {
getAppsTmp = tmp({
appId: addon.id,
appLaunch: addon.launchType,
appName: addon.shortName,
appUrl: addon.appLaunchUrl,
appIcon: addon.icons[bestIcon].url
})
$(modalId + ' .content').append(getAppsTmp)
})
また、FYIのネイティブ(またはポリ充てん)プロミスを使用すると、コードが(私の見解では)クリーナーにさえなります - https://jsfiddle.net/b82z1fnz/ –