Это потому, что для выполнения get_clip()
требуется время, для чтения буфера обмена требуется время (представьте, что в буфере обмена может быть огромное количество текста), и механизм JavaScript не останавливается, а вместо этого выполняет Следующая строка и журналы «неопределено».
Асинхронный JavaScript: (https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous/Introducing)
Итак, вы можете сказать get_clip()
, что делать, когда закончите читать буфер обмена. Вы можете сказать get_clip()
, выполнить эту функцию aCallback
примерно так:
var str = get_clip(aCallback);
Попробуйте этот код:
function get_clip(callback) {
navigator.clipboard.readText()
.then(text => { return callback(text); })
.catch(err => {
console.error('Failed to read clipboard contents: ', err);
});
}
var str = get_clip(aCallback);
function aCallback(text) {
console.log(text);
}