我想使用Promise的值作为这样的函数的默认参数:
_drawElement(selector, html = this._htmlFrom(selector)) {
console.log(html);
}
_htmlFrom(templateName) {
var templatePath = `${this._templates}/${templateName}.html`;
return fetch(templatePath)
.then((response) => response.ok ? response.text() : null)
}
但是我希望html是一个字符串,因为我可以用htmlFrom函数以外的其他方式传递它。在这里,我有个承诺,但我不知道如何检索字符串值(或null)。
好吧,因此,按照“某些性能”的建议,我这样做了:
async _drawElement(selector, html = this._htmlFrom(selector)) {
var tags = document.querySelectorAll(selector);
if (tags.length == 1) {
console.log(html);
var isPromise = typeof html.then == 'function';
if (isPromise) {
html = await html;
}
...
}
但是idk为什么会调用_htmlFrom函数,即使我使用html值调用该函数也是如此。 (即使我将字符串作为参数,为什么html仍是一个承诺)
答案 0 :(得分:0)
您需要的HTML是异步检索的,很遗憾,没有任何方法可以等待它在参数列表内完成 。您必须在函数的第一行上等待它:
async _drawElement(selector, html) {
if (html === undefined) {
html = await this._htmlFrom(selector);
}
console.log(html);
}