簡體   English   中英

如何獲取異步的值並傳遞給 function?

[英]How can I get the value of a async and pass to a function?

我需要獲取 mtime 的值並作為 lastSave function 的結果返回,但我沒有定義。 我知道我可以使用 fs.statSync("./Data.xlsx") 來獲取這個值。 我使用 fs.stat() 作為 function 中的異步示例。

const lastSave = async (file) => {
    const momento = await fs.stat(file, function (err, stats) {
        var mtime = stats.mtime;
        console.log("interno", mtime);    // this works
        return mtime
    });
    return momento
}

console.log(lastSave('./Data.xlsx'))  // this writes "undefined"

使用 function 的同步變體。

const fs = require('fs');

const lastSave = file => {
    return fs.statSync(file).mtime;
}

console.log(lastSave('./Data.xlsx'));

如果沒有同步版本,則將調用包裝在異步 function 中並調用它:

const fs = require('fs');

const lastSave = file => {
    return new Promise(done => fs.stat(file, function (err, stats) {
        var mtime = stats.mtime;
        console.log("interno", mtime);    // this works
        done(mtime);
    }));
}

(async () => {
    console.log(await lastSave('./Data.xlsx'));
})();

您可以使用基於承諾的變體:

const fs = require('fs/promises');

const lastSave = async file => {
    return (await fs.stat(file)).mtime;
}

(async () => {
    console.log(await lastSave('./Data.xlsx'));
})();

或者,您可以承諾您的異步function

const fs = require('fs');
const util = require('util');

const lastSave = async file => {
    return (await util.promisify(fs.stat)(file)).mtime;
}

(async () => {
    console.log(await lastSave('./Data.xlsx'));
})();

替代品

(async () => {
    console.log(await lastSave('./Data.xlsx'));
})();

lastSave('./Data.xlsx').then(console.log);

lastSave('./Data.xlsx').then(result => { console.log(result); });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM