Promise是延迟计算的一种策略,适用于多种并发风格:本地计算的线程和事件循环并发,以及同步和异步远程消息传递。 promise表示异步操作的最终结果。使用promises的主要方法是通过一种方法,将promise的最终值或失败原因的转换注册到新的promise。
用React的笑话和酶进行测试时,当单击点击调用一个呼叫promise的函数
Reactectv15.1.0
在尝试流式传输CSV,为每一行提出HTTP请求时,请有点混淆,并使所有内容都执行并日志以“正确”的顺序进行控制。最终,我认为我不是包裹...
在我的index.js Express代码中,我有以下内容。仅供参考,已遗漏了一些代码部分。
获取输入字样错误类型错误:type'()=>Promise<{ message: string; } | undefined>'无法分配给字符串| ((formdata:formdata)
/组件/按钮。tsx “客户端组件” 导出const deletebutton =({id}:{id:string})=> { const deleteImageWithID = deleteImage.bind(null,id); 返回 ( /组件/按钮.tsx “客户端组件” export const DeleteButton = ({ id }: { id: string }) => { const deleteImageWithId = deleteImage.bind(null, id); return ( <form action={deleteImageWithId} className="py-3 text-sm bg-gray-50 rounded-br-md w-full hover:bg-gray-100 text-center" > <DeleteBtn /> </form> ); }; /lib/action.ts “服务器组件” // Delete Image export const deleteImage = async (id: string) => { const data = await getImageById(id); if (!data) return { message: "No data found" }; await del(data.image); try { await prisma.upload.delete({ where: { id }, }); } catch (error) { return { message: "Failed to delete data" }; } revalidatePath("/"); }; eRROR消息: 。/组件/button.tsx:44:7类型错误:type'()=>Promise'不可分配给type'String | ((formdata:formdata)=> void | Promise)|不明确的'。 类型 '()=>promise<{ message: string; } | undefined>'不可分配给 type'(formData:formdata)=> void |承诺'。 类型“Promise<{ message: string; } | undefined>”不能分配给'void |承诺'。 类型“Promise<{ message: string; } | undefined>”不能分配给'void | 承诺'。 类型“Promise<{ message: string; } | undefined>”不能分配“ Promise”。 键入'{消息:字符串; } |未定义的“不能分配为“ void”。 键入'{消息:字符串; }'不能分配键入'void'。 <{ message: string; } | undefined> () => Promise<{ message: string; } | undefined>是deleteImageWithId的类型,也就是。 您不采取任何参数deleteImage.bind(null,id)返回包含字段的对象的承诺,即字符串,或者是未定义的。 您试图将该对象放在期望类型()的对象的位置。 这可能是message;作为表单的作用,它通过表单数据传递。 您的表格很空。 解决此问题的最简单方法可能是创建一个lambda包装器,然后将其扔掉。 string | ((formData: FormData) => void | Promise) | undefined 像这样的东西应该修复action的类型,因此它匹配了FormData的预期签名之一。
const resolveName = (fruitname) => { return new Promise((resolve) => { resolve(fruitname); }); }; async function countLetters(fruitList) { let result = ""; await Promise.all( fruitList.map(async (fruit) => { result += fruit + ": " + (await resolveName(fruit)).length + "\n"; // Fix: storing the string into a variable fixes this. // const s = fruit + ": " + (await resolveName(fruit)).length + "\n"; // result += s; }) ); return result; } const arr = ["apple", "banana", "cherry"]; const p = countLetters(arr); p.then((r) => console.log(r));
为什么promise.all()允许任何对象作为迭代传递? 示例(jsfiddle:https://jsfiddle.net/npqgpcud/6/): var Promise1 =“一个”; var Promise2 = 2222; var Promise3 =新承诺(
我可以等待一个当时的对象,该对象在无限循环中无需捕获执行的情况下解决了自己吗?
试图提出API,将承诺功能混合在一起: 等待类{ constructor(){ this.promise = Promise.resolve() } 然后(fn){ //等待的结果必须为_this_