相关疑难解决方法(0)

如何将现有的回调API转换为承诺?

我想使用promises,但我有一个回调API,格式如下:

1. DOM加载或其他一次性事件:

window.onload; // set to callback
...
window.onload = function() {

};
Run Code Online (Sandbox Code Playgroud)

2.平原回调:

function request(onChangeHandler) {
    ...
}
request(function() {
    // change happened
    ...
});
Run Code Online (Sandbox Code Playgroud)

3.节点样式回调("nodeback"):

function getStuff(dat, callback) {
    ...
}
getStuff("dataParam", function(err, data) {
    ...
})
Run Code Online (Sandbox Code Playgroud)

4.具有节点样式回调的整个库:

API;
API.one(function(err, data) {
    API.two(function(err, data2) {
        API.three(function(err, data3) {
            ...
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

如何在promises中使用API​​,我该如何"宣传"它?

javascript callback node.js promise bluebird

680
推荐指数
12
解决办法
20万
查看次数

在node.js中使用带有async/await的文件系统

我想在一些文件系统操作中使用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)

当我将代码重建到回调地狱版本时,一切正常,我得到了文件名.谢谢你的提示.

javascript fs node.js async-await

95
推荐指数
10
解决办法
8万
查看次数

如何正确读取async/await文件?

我无法弄清楚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中.

不管我做什么,我在控制台中得到错误或未定义.

asynchronous readfile node.js

71
推荐指数
8
解决办法
5万
查看次数