下面的代码演示了一个表单,它允许在自动提交之前从剪贴板粘贴值。它使用了两个then()
方法。请使用Chrome进行测试,因为Firefox还不支持它。
const input = document.querySelector('input'),
submitButton = document.querySelector('button[type="submit"]'),
pasteAndSubmitButton = document.querySelector('button[type="button"]');
pasteAndSubmitButton.addEventListener('click', function ()
{
navigator.clipboard.readText()
.then(clipText => input.value = clipText)
.then(() => submitButton.click());
});
<form>
Address: <input type="text" name="address" required>
<button type="submit">Submit</button>
or
<button type="button">Paste and Submit</button>
</form>
我想知道省略第二个then()
方法并将其中的代码移到第一个方法中是否安全,如下所示:
navigator.clipboard.readText()
.then(clipText =>
{
input.value = clipText;
submitButton.click();
});
我的测试表明结果是相同的,但是我不确定省略第二个then()
方法是否总是安全的,因为我到目前为止看到的fetch
示例使用了两个then()
方法。
1条答案
按热度按时间hc8w905p1#
许多
fetch
示例使用两个then
,因为涉及两个承诺:一个用于获取响应头,一个用于读取响应体。换句话说,fetch
和典型的后续方法(如Response.text()
)都返回一个promise。这里不涉及两个promise,因此您只需要一个then
。