小编Pie*_*ton的帖子

将promise解析为addEventListener

我实际上是在开发文本编辑器,只是遇到了有关图像上传和显示方法的问题。

我正在努力实现的目标

单击工具栏中的按钮时,该应用程序将显示一个弹出窗口,用于上传图片。然后,用户可以通过文件系统拖放文件或单击并选择文件。选择图像后,我通过ajax将其发送到服务器,该文件将上载并将其存储在文件夹中。完成此操作后,服务器将发送一个响应,表明该文件已正确并且可以使用。然后函数解析,编辑器将正确的链接添加到图像。

我在将事件监听器附加到Promise时尝试了一些可行的方法。

function uploadImage(editor) {
  /* Displays the pop-up */
  uploadView.style.display = "block";

  var promise = new Promise(function(resolve, reject) {

    uploadInput.addEventListener('change', function(event) {
      /* ajax call */
      resolve(value);
    });
    dropZone.addEventListener('drop', function(event) {
      /* ajax call */
      resolve(value);
    });

  });

  promise.then(function(result) {
    /* Adds the link */
  }, function(err) {
    /* handles errors */
  });
}
Run Code Online (Sandbox Code Playgroud)

一切都很好,但是每次触发该函数时,都会附加一个新的侦听器,并且每次单击新函数时,该函数都会再次运行...

然后我以为我可能会在诺言解决后删除听众。但是,为了做到这一点,我不能使用匿名函数,但是由于它引发错误,所以我不能在内部使用我的resolve方法。

这不起作用:

function uploadImage(editor) {
  /* Displays the pop-up */
  uploadView.style.display = "block";

  var promise = new Promise(function(resolve, reject) {

    uploadInput.addEventListener('change', handleUpload); …
Run Code Online (Sandbox Code Playgroud)

javascript promise

5
推荐指数
2
解决办法
7694
查看次数

VSCode - Turborepo - 本地包的自动导入建议错过了主入口点

我们最近使用turborepo将多个存储库重新分组为一个单一的monorepo,以便使用本地包实现更好的代码可重用性。

我们的文件夹结构如下所示:

/apps
| /app1
| /app2
/packages
| /package1
| | /some-folder
| | | someHelper.js
| | index.js // Main entry point exporting everything
Run Code Online (Sandbox Code Playgroud)

package1 package.json 文件看起来像这样

{
  "name": "package1",
  "main": "index.js",
  // Omitted irrelevant properties
}
Run Code Online (Sandbox Code Playgroud)

应用程序 package.json 看起来像这样

{
  "name": "app1",
  "dependencies": {
    "package1": "*"
  }
  // Omitted irrelevant properties
}
Run Code Online (Sandbox Code Playgroud)

当在应用程序和我引用的上下文中时someHelper,智能感知导入建议给出以下内容:

import someHelper from "<rootDir>/packages/package1/some-folder/someHelper";
Run Code Online (Sandbox Code Playgroud)

虽然我希望它像这样导入:

import { someHelper } from "package1";
Run Code Online (Sandbox Code Playgroud)

两种进口都有效,但第二种更干净。我只是无法让 VSCode 以这种方式工作。

我在各个级别(应用程序、包和根目录)尝试了 jsconfig.json 路径别名的不同组合,但都没有达到预期的效果。

我缺少什么吗?

javascript intellisense visual-studio-code monorepo turborepo

5
推荐指数
1
解决办法
1697
查看次数