我想使用promises,但我有一个回调API,格式如下:
window.onload; // set to callback
...
window.onload = function() {
};
Run Code Online (Sandbox Code Playgroud)
function request(onChangeHandler) {
...
}
request(function() {
// change happened
...
});
Run Code Online (Sandbox Code Playgroud)
function getStuff(dat, callback) {
...
}
getStuff("dataParam", function(err, data) {
...
})
Run Code Online (Sandbox Code Playgroud)
API;
API.one(function(err, data) {
API.two(function(err, data2) {
API.three(function(err, data3) {
...
});
});
});
Run Code Online (Sandbox Code Playgroud)
我想在一些文件系统操作中使用async/await.通常async/await工作正常,因为我使用babel-plugin-syntax-async-functions.
但是使用这段代码,我遇到了names未定义的if情况:
import fs from 'fs';
async function myF() {
let names;
try {
names = await fs.readdir('path/to/dir');
} catch (e) {
console.log('e', e);
}
if (names === undefined) {
console.log('undefined');
} else {
console.log('First Name', names[0]);
}
}
myF();
Run Code Online (Sandbox Code Playgroud)
当我将代码重建到回调地狱版本时,一切正常,我得到了文件名.谢谢你的提示.
我无法弄清楚async/await是如何工作的.我稍微理解它,但我不能使它工作.
function loadMonoCounter() {
fs.readFileSync("monolitic.txt", "binary", async function(err, data) {
return await new Buffer( data);
});
}
module.exports.read = function() {
console.log(loadMonoCounter());
};
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用readFileSync,但是如果我这样做,我知道我永远不会理解async/await,我只会把问题埋没.
目标:调用loadMonoCounter()并返回文件的内容.
每次调用incrementMonoCounter()(每个页面加载)时,该文件都会递增.该文件包含二进制缓冲区的转储,并存储在SSD中.
不管我做什么,我在控制台中得到错误或未定义.
node.js ×3
javascript ×2
async-await ×1
asynchronous ×1
bluebird ×1
callback ×1
fs ×1
promise ×1
readfile ×1